タグ

HaskellとAdvent Calendarに関するItisangoのブックマーク (2)

  • 型推論のしくみ

    このエントリーは、KLab Advent Calendar 2015 の15日めの記事です。 こんにちは、めっきり Jenkins の介護士となった @kakkun61 です。 趣味では Haskell を書いているのですが、そこでお世話になっている「型推論」のしくみを少し知ることができたのでみなさんに紹介したいと思います。 初めにお断わりしておくと、これから紹介する内容は『型システム入門』に全て書かれてあることです。KLab では『型システム入門』輪講をしているのですが、一緒に勉強している同僚と社外から先生として来ていただいている方にこの場を借りて感謝の意を表します。ひとりだとここまで読めなかったと思います。 『型システム入門』 型推論の解説に入る前に少し『型システム入門』について書こうと思います。 『型システム入門』は原著名 “Types and Programming Languag

    型推論のしくみ
  • にせ末尾再帰 - あどけない話

    これはHaskellスペースリーク Advent Calendar 2015の8日目の記事です。 IOのコードは、普通に書けば末尾呼び出しの最適化が効く形になる。たとえば、こんな感じ: foo :: Char -> String -> IO Int foo a b = do c <- bar a b zoo b c woo c woo :: Int -> IO Int woo c = do d <- goo c return $ d + 1 foo が woo を呼び出す時は、fooのフレームを忘れてしまってよい。IOの文脈で再帰関数を書く場合も末尾再帰で十分な場合が多い。 goo :: Int -> IO () goo 0 = return () goo n = do getChar >>= putChar goo (n - 1) 残念なことに、一見末尾再帰に見えるが実はそうなっていなく

    にせ末尾再帰 - あどけない話
  • 1