Life Goes On

まあまあだけど楽しんでる方です

Grass

SKS = I

なんで SKK = I なんだっけと考えていて、SKKx = Kx(Kx) = x で (Kx) は無視されるから、二つ目の K は他のコンビネータ(例えば S)でもいいよなと思ったわけです。 s x y z = x z (y z) k x y = x というように、Haskellで定義して実行すると、上手くいき…

続・Grass のインタプリタを書いてみたよ

という訳で、書き直しました。 Haskell による Grass のインタプリタです。Grass コードのファイル名を与えて実行します。 必要な仕様は、全て満たしているはず。全角文字(UTF-8、Shift_JIS)も受け付けます。 バグ報告は随時お願いします。 Grass 人口が少…

Grass のインタプリタを書いてみたよ

Haskell で Grass のインタプリタを書いてみました。以前から書いてみたいとは思っていたのですが、どこから手をつければいいものやら分からず、半年近く経ってしまいました。悲願達成。 Haskell 版は既に mr_konn さんが書いているので、目新しいものではあ…

チャーチ数であそぼ

チャーチ数の演算をコンビネータで表すと (^) はλabcd.bacd = λab.ba = CI(引数の順序を気にしないなら I ) (*) はλabcd.a(bc)d = λabc.a(bc) = B (+) はλabcd.ac(bcd) = λabcd.B(ac)(bc)d = λabc.(BBac)(bc) = λabc.S(BBa)bc = λa.BS(BB)a = BS(BB) (+) …

あなごるでv

仕事が落ち着いたので、前から気になっていたあなごるのvの code を読んでみました。 基本は↓の関数を作ること。 f x = if succ x == w then out x else f (succ x) 名前はつけられないので↓みたいにして、引数 x に関数を渡す。 f x y = if succ y == w the…

インタプリタ

そもそもなぜ utf8-string モジュールを入れたかというと、こんなの が出てきたからです。 すごい、Hello, world! も v も動いてる!しかも 100 行で書けるんだ。 IO 周りがよく分かっていないので勉強して、自分でも書けるようになりたい。 しばらくは勉強…

再帰の続き

相変わらずハマってます。もともとやりたかったことはコレ。(何をしたいのかバレバレですが) \ f x -> if succ x == 'w' then x else f (succ x)ただこれだと f (succ x) を評価しようとして無限ループに陥ってしまうので、書き換える。 でもやっぱり無限…

Yコンビネータで再帰

せっかくGrassが盛り上がってるので、少しでもついていこうと、Yコンビネータを使った再帰に挑戦してます。エラーが出なくなったと思ったら無限ループ! 色々調べてたら irie @ ウィキ - grass.el に例が載ってました。 階乗の関数を返す関数gは、一般的な…

Hello, world!

Hello, world! ができました。613B!やた! wvwwWWwWWWwvWwwwwWWwWWWwWWWWwWWWWWwWWWWWWwWWWWWWWwWwwwwwwwwwwwwWWWWwWWWWWWWwWWWW WWWWWWWWWWwWWWWWWWWWWWwwWWWWWWWWWWwwWWWWWWWWWWWWwWWWWWWWWWWwwWWWWWWWWWWwwwwwwWWW WWWWWWWWWWWWwWWWWWWWWWWWWWWWWWWWWWwW…

はじめてのGrass

id:nishiohirokazu さんの 草植えてみましたwWWwwww 経由で Grass を知って、ちょっと触ってみました。 (はじめての C がはじめてのアレなら、はじめての Grass は「吸って」みましたと言うべき?) インタプリタは ちょっと草植えときますね型言語 …