タグ

関数型とHaskellに関するtodays_mitsuiのブックマーク (2)

  • Haskellで目指せワンライナー! 〜 1行コードでがんばる 〜 - 無駄と文化

    これはHaskellアドベントカレンダー2015の(2日遅れの)8日目の記事です。 当にすみませんでした。 導入 小さな部品(関数)を組み合わせて大きなプログラム(関数)を作り上げる、これこそが関数型の醍醐味かなと思います。 しかもHaskellは標準関数も豊富で、それらを糊付けする手段も豊富です。上手くやればプログラム全体を1行で書き上げてしまうことも可能なんじゃないでしょうか。夢がありますよね。 そんなわけで、Haskellにおいて1行(ワンライナー)コードを書くための指針をまとめます。 メリット まずはワンライナーのメリットをおさらいです。 いちいち関数名や変数名を考えずに済む ワンライナーコードは他のワンライナーのパーツとして容易に組み込める 1.について、 いちいち細かな関数に分けて別々に記述していると、それだけ名前を考える必要がありますね。 正直、英語よく分からないし、名前を

    Haskellで目指せワンライナー! 〜 1行コードでがんばる 〜 - 無駄と文化
    todays_mitsui
    todays_mitsui 2015/12/10
    脅されて書きました。書いてる間ずっと「マサカリ」って言葉が頭の中を漂ってて精神的にツラかったです。
  • Freeモナド実用の旅(2): Gotoモナド - モナドとわたしとコモナド

    かなりシンプルに実装できた。よい子は絶対にマネしないでね! import qualified Data.IntMap as M import Control.Monad.Trans.Free import Control.Monad.Trans newtype Label = LabelId Int deriving (Eq, Ord) data Labeling a = Label (Label -> a) | Goto Label -- deriving Functorがあれば不要 instance Functor Labeling where fmap f (Label g) = Label (f . g) fmap f (Goto l) = Goto l type GotoT = FreeT Labeling label :: Monad m => GotoT m Label la

    Freeモナド実用の旅(2): Gotoモナド - モナドとわたしとコモナド
    todays_mitsui
    todays_mitsui 2013/02/21
    あ、これ俺もやりたい。
  • 1