Haskell

対話式で変数を作る

Haskellで「値代入したい!」(代入はできなくて、値束縛はできる) こちら let v = [[3,2,1],[0,4,5]] 非対話式なら(この資料(こちら)に出ている列車の問題を解くための助走)以下のようなものをhoge.hsに書いてloadすればよい initTrain :: [[Int]] -- テスト…

あみだくじを分解する

Haskellの手習いをしている 圏をわかるために、数学っぽくない例を挙げているサイトを参考にしている その中の、行列の圏とあみだくじの圏とを併せてみよう あみだくじの圏で「結合」というのは、本数が等しいあみだくじを連結すること 連結がうまくいくって…

Haskell第3回 mapからモナドを理解する

mapという関数がある Hoogleで調べると map f [x1, x2, ..., xn] == [f x1, f x2, ..., f xn] map f [x1, x2, ...] == [f x1, f x2, ...] とある リスト[]のすべての要素にfを働かせますよ、という関数である "mapは便利なので,リスト以外の自分の使ったデ…

Haskellの調べものをする

GCHiコマンド(:type (略して:t), :info (略して:i)とか) Hoogle, Hayoo (Haskellのコード探し) Haskell98の中身の確認 パスのこと、後付けパッケージ・モジュールとか

Haskell第2回 多相性(ポリモーフィズム)への理解を深める

型 Haskellは型付きλ計算(Wiki)に基づく関数型プログラミング言語 関数の入出力の型をかっちり決めている、と言う意味 前の記事で作成した、"repeated"関数にも型がついている それを表示させるためのコマンドが":type" Prelude> let repeated f n = \x -> (…

Haskellの特徴

関数型プログラミング言語 「そもそも関数型プログラミングって」(古典的説明がこちら) そこで挙げられている「仕事を抽象化しておくことについて」の例として出てくる、「再帰関数」をパターン化すること 初期値と2項演算による再帰関数は"reduce"と呼んで…

Haskellの構成要素

値 演算子 関数 関数の定義 環境 環境のスコープ 型 構成子 クラス 型クラス 型構成子クラス モジュール

パス、モジュールを取ってきて使う

「GHCはインストールされたパッケージだけを認識します」(こちら) インストールされてGHCに認識されるパッケージの一覧は、次のようにして、確認できます コマンドプロンプトで ghc-pkg list と打つ 後からパッケージを取り込みたいときは、「取ってきて、イ…

Haskell第1回 関数型プログラミングの世界へようこそ

処理の繰り返しのHaskell的表記とその使用 let repeated f n = \x -> (iterate f x)!!n repeated (+2) 3 5 repeated (+3) 3 5 3+2+2+2+2+2 5+2+2+2 5+3+3+3 let repeated f n = \x -> (iterate f x)!!n let repeated : "repeated"という名前の関数を作る f,n…

Haskell練習帳

目次 インストール・起動・使い始め Haskellを学ぶときの調べもの Haskellを学ぶときに使うコマンドとか ペースメーカーは『本物のプログラマはHaskellを使う』(そんなに気張らなくてもよいと思うけれど…)こちら 0. そもそもこのシリーズ記事を読むための基…

Haskell 98

Haskell 98で提供しているものを眺める こちら

Haskellのコード探し

Haskellの「すでに入っている」関数のコードを見る Hoogle(こちら)や Hayoo!(こちら)

GCHiコマンド

GCHiコマンド 2. 型とその多相性で、作った関数の型をみたり、型の情報を覗いたりしている 使っているのは":"で始まるコマンド それらはGCHiコマンドと言うものらしく、こちらを参照 :type \f n -> repeated f n 12 :info Num *Main> :type \f n -> repeated…

コンパイル

誰かがコピーできるように置いてくれているソース群があったとする それを手元にとってきてどうするか こちらを使うことを例にとる このページではlfit2.lzhなるHaskellソースファイルを固めたものを紹介されている 手元にダウンロードして解凍するとMain.hs…

クラス・インスタンス

型クラスは"型クラス(type class)は相異なるデータ型に共通したインターフェイスを持つ関数を定義する。"(Wiki) クラスは、「こういうことをやりたい」という「抽象的な仕事」に対して定義する 「抽象的な仕事」は型に依存しないので(しないこともあるので…

第0回 用語に慣れる

目次 Haskellの構成要素 Haskellの特徴 クラス・インスタンス コンパイル

自分なりのHaskellと圏論

以下の2つを書き直しているだけ Haskellと圏論(Wikibooks) これの噛み砕き版(こちら) Haskellと圏論 Haskellが圏である Haskellを成り立たせているものを圏論の言葉で語ることができる Haskellは圏を作ったり、扱ったりすることができる Haskellが新たなデ…

Haskellの導入

インストール(こちらから)(Windows版) WinGHCiというのを立ち上げると、以下のような画面が出る "Prelude"というのは、こちらにあるように、対話式インタープリタ GHCiという方を立ち上げると、コマンドプロンプトのようなものが出るが、これも"Prelude"とな…

Haskell再び

Haskellというものが少し気になっていた(こちら) 圏論も気になっていた(こちら) Haskellと圏論(Wikibooks) これの噛み砕き版(こちら) 自分なりのHaskellと圏論 実は、数学セミナーで2011年7月号より『圏論の歩き方』という連載が続いていた 2012年3号にて、…