I’ve been trying to make music with Haskell for a little while now. One thing about Haskell is that its strict typing forces you to think a lot about how you represent things. I wanted to support two things in my musical pattern representation, firstly polyphony (more than one sound being triggered at the same time) and secondly recursive structure. In the west we often think of rhythm in quite `
By Brent Yorgey, byorgey@gmail.com Originally published 12 March 2009 in issue 13 of the Monad.Reader. Ported to the Haskell wiki in November 2011 by Geheimdienst. This is now the official version of the Typeclassopedia and supersedes the version published in the Monad.Reader. Please help update and extend it by editing it yourself or by leaving comments, suggestions, and questions on the talk pag
In this post I will describe the current state of the Haskell ecosystem to the best of my knowledge and its suitability for various programming domains and tasks. The purpose of this post is to discuss both the good and the bad by advertising where Haskell shines while highlighting where I believe there is room for improvement. This post is grouped into two sections: the first section covers Haske
What I Wish I Knew When Learning Haskell Version 2.5 Version This is the fifth major draft of this document since 2009. HTML Version Screen PDF Printable PDF EPUB Version Kindle Version Pull requests are always accepted for changes and additional content. This is a living document. The only way this document will stay up to date is through the kindness of readers like you and community patches and
※これはHaskell Advent Calendar 2012の12/12分の記事です。 こんにちわ、Perlのプログラマの@hirataraです。関数型言語はまともに使ったことがないので、命令型言語の話を書きます。 Haskellでのふつうの"関数" Haskellは純粋関数型言語なので、例えば、add1 :: Int -> Intのような型の関数で副作用を発生することはできません。ここでいう副作用とは、ログを出力したりネットワークにアクセスしたりといったoutputだけではなく、ファイルを読み込んだり環境変数を参照するといったinputも含みます。add1は数学の関数と同じように振る舞います。もっときつい言い方をすれば、add1は単なる辞書(Dictionary or Map or HashTable, etc.)のように、キーに対して決まった値を返すような働きしかしません。(ただし
1 Monoid 2012.11.18 2 (a b) c = a (b c) Monoid (a b) c = a (b c) e a = a e = a (a b) c = a (b c) e a = a e = a a a-1 = e Semi ring fusion 3 Q) Monoid A) 1 Monoid 4 Monoid doctest data Summary = Summary { sExamples :: Int , sTried :: Int , sErrors :: Int , sFailures :: Int } deriving Eq instance Monoid Summary where mempty = Summary 0 0 0 0 (Summary x1 x2 x3 x4) ‘mappend‘ (Summary y1 y2 y3 y4) = Su
Prelude には,const :: a -> b -> a という関数が定義されています.a -> b -> a という型は a -> (b -> a) のことなので,この関数を引数に適用すると,b -> a という型の関数になります.できあがった関数はどのような値 v :: b に適用しても,この関数を作るときに適用した引数を返します. ghci> :type const const :: a -> b -> a ghci> let k1 = const 1 ghci> k1 "Hoge" 1 ghci> k1 False 1 ghci> k1 undefined 1 ghci> let kHuga = const "Huga" ghci> kHuga "Hoge" "Huga" ghci> kHuga 2 "Huga" ghci> kHuga undefined "Huga"さて「
Haskellで簡単なプログラムを書くのに最低限必要な基礎文法を取り上げます。練習では再帰に慣れることに重点を置きます。再帰によるリスト処理の例として各種ソート(挿入ソート、バブルソート、マージソート、クイックソート)を紹介します。ラムダやモナドなどの発展的な内容には触れませんのでご了承ください。 シリーズの記事です。 Haskell 超入門 ← この記事 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文解析 超入門 【予定】Haskell 継続
Haskellではアクションと呼ばれる機能により副作用が扱えます。アクションの使い方の初歩を説明します。ライブラリで用意されたアクションを手っ取り早く使うことを目的としているため、モナドや圏論には言及しません。 シリーズの記事です。 Haskell 超入門 Haskell 代数的データ型 超入門 Haskell アクション 超入門 ← この記事 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文解析 超入門 【予定】Haskell 継続モナド 超入門 【予定】Haskell 型クラス 超入門 【予定】Haskell モナド
http://cheatsheet.codeslower.com/CheatSheet.pdf の翻訳です。 日本語訳版のファイルが無くなっているようなので。 誤字誤訳その他問題があればコメント、編集リクエストください。 また、直訳な部分も多いので良い訳がある場合もコメント、編集リクエストください。 Haskell Cheat Sheet このチートシートはHaskellの基本的な要素である構文、キーワード、その他の要素を記しています。また、実行可能なHaskellファイル、印刷可能なドキュメントです。お好きなインタプリタでソースを読み込んでサンプルコードを動かしてください。 基本構文 コメント 単一行コメントは--で始まり、行末までがコメントになります。複数行コメントは{-から-}までです。コメントはネストすることができます。 HaskellコードのドキュメントシステムであるHaddoc
種の仕組みとそれに付随する言語拡張についてPosted by mizunashi-mana on September 18, 2017 Haskellには種(kind)という仕組みがあります。大雑把に言ってしまえば、「型の型」を実現する仕組みです。この仕組みについて、あまり情報が出回っていないようなので、解説記事を残しておこうと思います。なお、前編と後編に分かれていて、この記事は後編になります。前編はこちらになります。 この記事は、Ladder of Functional Programming (日本語訳)の FIRE LUBLINE(ADVANCED BEGINNER) を対象に、Part 1の続きとして、種に付随するGHC言語拡張やパッケージを紹介するものです。 なお、特に断らない限り、対象としてGHC8系を設定しています。stackを使ってる方はresolverをLTS Haske
この記事は定期的にメンテナンス(加筆・修正)されています。 本記事のコードは waddlaw/Qiita-stack に置いてあります。 Haskell の開発方法については以下のサイトに色々とまとめていますので、こちらもご参照ください。 Haskell Development TODO: profiling, default-extension, ghc-option, package.yaml と stack.yaml の関係, について追記する。 本記事では Pearls of Functional Algorithm Design (訳本: 関数プログラミング 珠玉のアルゴリズムデザイン) の第1章を題材として stack を使った Haskell プロジェクトの基本を解説しています。 プログラムの内容を理解できなくても、記事を最後まで読むことで Haskell プロジェクトの作り
この記事の目的は、Applicative 信者による Applicative スタイルの布教です。 簡潔に結論を述べると、 foo = do a <- m1 b <- m2 return (f a b) のようなコードを書きたくなったら foo = f <$> m1 <*> m2 と書きましょうということ。 合い言葉は、「do と return をなくせ!」です。 FunctorとMonadの間 Functor を特殊化した型クラスがMonadで、Monadの方が強力です。なぜなら、メソッドが増えるからです。 Functorのメソッドはfmapです。fmapの別名を (<$>) といいます。(この記事では、(<$>) と liftM を同一視します。) そして、Monadのメソッドは、ご存知の通り (>>=) と return です。 FunctorとMonadの間にApplicative
その昔,Haskellの開発環境を整えようと思った時に,一番手軽だったのはHaskell Platformを導入することでした. Haskell Platformには次のものが含まれています. Haskellの実装の一つであるGlasgow Haskell Compiler (GHC) ビルドツールでありパッケージマネージャでもあるcabal コアライブラリと一般的なライブラリ群 これを導入することで,Haskellの開発をすぐに始めることが出来ました. しかし,Haskell Platformには次のようなストレスもあります. ミラーが無いまたはCDNのエッジが日本国内にないのでダウンロードが遅い リリースがGHCに比べあまり頻繁ではないので,最新の環境が使えない そのため非常に便利な存在ではありましたが,結局ghcとcabalをbrewで入れてsandboxで個別の環境を整えていたこと
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く