2017年1月6日金曜日

STEP UP Haskell!! -1-

mainpicture

新しいサービス開発を行うことになった。

rubyやjsでやれば2週間で実現できそうな内容だったが、
3ヶ月程度期間があるのでhaskellでやってみることにした。

私にそこまでhaskellに関しての知見があるわけではない。 本を一冊読んだ程度だ。

そこで、ある程度の基礎やキャッチアップした内容をメモを残していく。


STEP UP Haskell!! -1-

  1. Haskellとは何者なのか?

Haskellとは何者なのか?


関数を第一級関数として取り扱うことのできる言語である。
静的型付けの言語である。

これらの性質により副作用がなく参照透過性のよいプログラムを書くことができる。

他の言語にも関数を渡すことのできるものはある。
javascriptやらpythonなどは比較的容易にそれを可能とする。

違いをあげるとすれば静的な型付けが行われるという点だ。

これにより渡された関数は何をinputとして受け取り何をoutputとして返すのかを理解することができる。

Haskellとはこの関数自体に型を定義することが可能である。
(javaやC++のように値に型を定義できる言語のように)

Middleware: Application => Application
Application: Request => Response

といったようなことが可能なのであろう。

ちなみに別な書籍ではすべての元はラムダ計算(lambda calculus)であるという記載もあった。

こちらも気になったので少し調べてみた。


ラムダ計算(lambda calculus)

以下の二つの特徴からなるラムダ式を構築してそれらを連結していくものとして捕らえよ。みたいな記載だったが少しわかりにくい。

  1. アルファ変換
    ラムダ計算の内で、束縛変数(binding variable)と自由変数(free variable)が被らなければ
    変数の名前(a,b,c, x,y,z)などは重要ではない。
    その規則の中で束縛変数(binding variable)を置き換えてもいいよ。
    という規則。

    λa.a
    λx.x

    は同義だよ。
    とのこと。

  2. ベータ変換
    ラムダ計算で、λを一つ一つ関数を適用していくこと。

    a.a) 1

    これはλにa := 1を適用することにより

    1

    を得ること。


少し頭がヒートしてきたので今日はここまで。

では良いインプットと良いプログラミングを。

0 件のコメント:

コメントを投稿