八葉の日記

日々、感じたことをまとめる場として利用する

高階関数

Haskellでは引数に関数をとったり、戻り値で関数を返したりできる。このような関数を高階関数という。

なお、Haskellではすべての関数は引数を1つとる関数であるため、引数を2つとっている関数は、カリー化という仕組みで解決している。

カリー化 - Wikipedia

 

例えばmaxの型は、

:t max
max :: Ord a => a ->( a -> a)

 

a型を受け取って、a型を引数にとってa型を返す関数を返すになります。

そして、戻した関数が第2引数に適用される。

 

 

 

 

 

 

Haskelメモ(1)

Haskelの型の読み方をよくわすれてしまうのでメモ(参考にした本は一番下に記載)

まず、Haskelは:t で型を見れる。

>|haskel|
:t False
False::Bool ||<

上にでてくる表記v::Tは「vの型はTである」を表現している。

ちなみに「e::T」と書くと式eを評価すると型Tを生成するという意味になるそうだ。

 「vの型はTである」を関数に対して見てみると、例えば下は「exampleの型はInt型の引数をBool型に変換する型である」になる。

>|haskel|
:t False
False::Bool
||<


 

プログラミングHaskell

プログラミングHaskell

 

 


 

 

 

 

 

書き始め

①技術力向上

僕は仕事でC++を5年間使用している。C++の書き方は、"手続き型"、"オブジェクトデザイン"、"関数型"と幅が広く、実にいろいろな書き方ができます。

最近聞いた話の中で関数型言語は、宣言的にコードを書けるので保守性が容易になると聞き、手を出してみようと思いました。

 

②積本の消化

実は以前から興味はあったので、関数型言語の本を買っていたりした。このまま積んどくのはもったいないので、しっかり消化しようと思う。

 

www.amazon.co.jp

 

 

www.amazon.co.jp

 

 

www.amazon.co.jp