Haskellに関するsenju_hのブックマーク (3)

  • Haskellの言語拡張たち - rfなブログ

    前回、なんか拡張を沢山使っていたが、おまじないのままなのもそろそろまずい感じなので、とりあえず調べてみた。 今回調べた拡張 型系 GADTs ScopedTypeVariables EmptyDataDecls TypeFamilies 型クラス系 MultiParamTypeClasses TypeSynonymInstances FlexibleInstances FlexibleContexts パターン系 BangPatterns PatternGuards ViewPatterns 文字列系 OverloadedStrings TemplateHaskell系 TemplateHaskell QuasiQuotes import系 ImplicitPrelude PackageImports 他言語系 CPP ForeignFunctionInterface 参考にしたところ L

    Haskellの言語拡張たち - rfなブログ
  • foldlを直す - 純粋関数空間

    http://www.well-typed.com/blog/90/ foldlに関するこの記事(英文)が面白かったので、勝手翻訳しました。 foldlなんとかなるといいですね。 foldlを直す foldl 関数は壊れている。壊れているとみんなが知っている。 四半世紀近く壊れたままだ。ついにこれを修正する時が来た! 今日、私はPrelude.foldlをData.List.foldl'として知られる実装で再定義することを提案する。 foldlは壊れている! 既にご存知だとは思うが、念のため… Haskellerが必ずfoldlではなく、foldrやfoldl'を使うように勧めてくることにお気づきだろうか? 例えばReal World Haskellでは次のように言っている。 `foldl`のサンクの挙動のため、実アプリではこの関数を使わないようにするのが望ましい。 特に問題がない場合でも

  • リテラルが多相的であること、もしくは値コンストラクタの要らないデータ構造 - think and error

    を適当に開いて読んでみるということをたまにする。 Real World Haskell(RWH)のデータ構造の章。 ghci> 3 * 2 + 4 10 ghci> prettyShow $ 3 * 2 + 4 "3 * 2 + 4" こんな感じのものが書いてあった訳だ。 僕には何が起こっているか全然分からなくて、一体どんな言語拡張使ってるんだこの野郎と思いつつその章をざっと見たけど何も説明見つからなかったりして混乱。 結論を言えば2,3,4はよく知っている数値リテラルで、(+)も(*)もよく知ったNumのメソッドだった。僕が思っていたより色々出来たというだけで。 僕が数値リテラル見たときだけ何故かCやPHPといったあちらの言語を想定してしまっていたことが原因だった。 加えてHaskellでデータ構造を作るには、値コンストラクタ(もしくはそれ相当の関数)が必要だと思っていたためだった。

    リテラルが多相的であること、もしくは値コンストラクタの要らないデータ構造 - think and error
  • 1