前回の記事はLiquidHaskellの表現力を高める機能であるAbstract RefinementとBounded Refinementの解説をしました。 今回は前々回のナイーブなコードをHoareモナドを用いてHaskellらしいコードに書き直してみます。 Abstract RefinementとBounded Refinementをガンガン使っていきます。
LiquidHaskell 入門 その3
前回の記事ではLiquidHaskellを用いて簡単な言語の評価機を作ってみました。 今回はそれをStateモナドを用いて書き直すために必要な新しい機能であるAbstarct Refinement, Bounded Refinmenetの解説をしていきたいと思います。
LiquidHaskell 入門 その2
前回の記事ではLiquidHaskellの基礎を学びました。 今回はLiquidHaskellを用いて、とあるデータ型に対して、通常のHaskellの型の上に、実装者の暗黙の意図を反映したより細かい型をつけてみたいと思います。
LiquidHaskell 入門 その1
今回から何回かに分けて LiquidHaskellとFの比較記事を書きたいと思います。 数か月前にいつか触ろうと思っていたLiquidHaskellを試す機会がありました。 やりたかったことがLiquidHaskellだけでは達成できなかったのでFも試してみました。 その時に見つけた差異を記事にしてみます。 先にネタバレしておくと、HoareモナドはLiquidHaskellではできない?けどF*なら当たり前のように使えるよねっていう話なので、面白そうと思う方は読んでいただけると嬉しいです。 今回の記事では、LiquidHaskellの基礎をまとめることにします。 Haskellを触ったことがある人なら読める内容にしているつもりです。