タグ

関数型に関するtodays_mitsuiのブックマーク (3)

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

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

    Haskellで目指せワンライナー! 〜 1行コードでがんばる 〜 - 無駄と文化
    todays_mitsui
    todays_mitsui 2015/12/10
    脅されて書きました。書いてる間ずっと「マサカリ」って言葉が頭の中を漂ってて精神的にツラかったです。
  • 静的型と OO というものははじめから… - camlspotter’s blog

    OO の方面から、「静的型とか別に役に立つとは思えない、静的型の人は頭おかしい」 とか関数型の方面から、「静的型が役に立たないなんてはずない OO の人は頭おかしい」 とか良く聞こえてくるんですが、ダックタイピング心理学 とかいう真に頭おかしい意見を無視できるとすると(無視できない量あるんですが)、まあ私にはどっちもわからんでもない、という話です。 型をゴミ箱に捨てておいてから、後でゴミ箱を漁るなら、型なんかいらない オブジェクトの静的型システムを大雑把にいうとまず upcast と downcast があります。 upcast はオブジェクトの静的型をそれが属するクラスからそのスーパークラスにを変えちまうこと、downcast はその逆、オブジェクトの静的型をそれが属するクラスから子クラスに変えちまうことです。サブクラスの物はスーパークラスとしても通用するはずですから upcast は失

    静的型と OO というものははじめから… - camlspotter’s blog
  • 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