2011-12-01から1ヶ月間の記事一覧

データ構成子とか関数合成とか

リストを引数として受け取り、head関数を適用した後Foo型構成子に放りこんで返すheadFoo関数を考えます。 module Main where data Foo a = Foo a deriving Show headFoo a = Foo (head a)ここで、データ構成子Fooは「a -> Foo a」という関数と見なせるので、…

Haskellでチューリングマシン(2) テープの処理をモナドに

前回のエントリのテープに対する処理を、モナドに包んだだけです。 module Machine(TapeValue(..)) where --テープの値は 0 または 1 data TapeValue = T0 | T1 deriving Eq instance Show TapeValue where show T0 = "0" show T1 = "1" --無限長の長さを持…

Haskellでチューリングマシン(1) 無限の長さのテープを作る

そろそろ簡単なテストコードを書き連ねるより、それなりの規模のものを一つ作ってみるのが良いと思ったので、タイトルの通り、チューリングマシンのエミュレーターを作ってみる事にしました。Haskellもまだそんなに使いこなせてないうえに、チューリングマシ…

AmaterasUMLでクラス図作成

今まで、ちょっと触った程度で「これ便利!」などと知ったふうな口をきいてたAmaterasUMLプラグインなのですが、古くなったコードを読みなおすのに便利なんじゃないかと思ったので少しだけちゃんと使ってクラス図を作ってみました。 パッケージエクスプロー…

Haskellで新しい型を定義する

そもそも、今日はderivingについて書こうと思っていたのですが、その前に型を作る段階で一つ記事が書けるレベルの内容だったので、まずはちょっとした型を定義してみる事にします。 module Main where --型 Bar を作成 newtype Bar = Bar Int deriving (Eq,R…

モナドをたしなむ

以前のエントリにてHaskellで、簡単なモナドを使って動かしたりしてみましたが、今回はもうちょっとモナドの世界に突っ込んでみようかと思います。と、思って意気揚々とvimを立ち上げたのですが、恥ずかしながらそもそも型クラスやデータ構成子をちゃんと理…

今更Dartのメソッドオーバーロード/名付きコンストラクタの話

以前から書こう書こうと思っていた内容を少し。 以下、公式サイトのArticles、diomatic Dartより。 Named constructorsLike most dynamically-typed languages, Dart doesn't support overloading. With methods, this isn't much of a limitation because y…

自作言語、最初で最後のプログラム

問題の自作言語ですが、とりあえずマルバツゲームを開発してみて、標準入出力内でひと通りの事はできるという事は解りました。 とはいえ、 そもそも右結合にしてしまった事 簡約がグダグダなのでクロージャが扱えない リストと値の扱いが曖昧なまま力技で実…

Rubyで遊ぶ

以前から面白い言語だと聞いていたので、ちょっとばかり遊んでみました。 l = (1..50).to_a l.map! do |o| o*=2 end p l 実行結果 $ ruby test10.rb [2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 42, 44, 46, 48, 50, 52,…