タグ

haskellとmaybeに関するkiyo_hikoのブックマーク (4)

  • オブジェクト指向&関数型言語でなぜつくるのか - IOモナドで副作用を実現する

    『IOモナドで副作用を実現する』 以下の文章は、第13章の一部として「関数型言語の7つの特徴」のあとの「関数型言語の分類」に続く節として書いたものです。 他の文章に比べてバランスが悪かったため、最終段階でボツにしました。 →『オブジェクト指向でなぜつくるのか第2版』のサポートページへ 純粋関数型言語であっても、プログラム全体としては画面やデータベースやネットワークなどとの外部入出力を実現する必要があります。このため、言語仕様として副作用を認めないとしても、なんらかの仕組みを用意して入出力を実現する必要があります。これはHaskellでは「モナド」と呼ぶ仕組みが相当します。今のところモナドを言語標準の仕組みにしているのはHaskellだけですが、わかりづらいことで悪名高い仕組みでもあるため、ここで概要を説明しておきましょう。突っ込んだ内容になりますので、Haskellやモナドに特別な関心が

  • Null pointers vs None vs Maybe

  • The Haskell 98 Library Report: Maybe Utilities

    module Maybe( isJust, isNothing, fromJust, fromMaybe, listToMaybe, maybeToList, catMaybes, mapMaybe, -- ...and what the Prelude exports Maybe(Nothing, Just), maybe ) where isJust, isNothing    :: Maybe a -> Bool fromJust             :: Maybe a -> a fromMaybe            :: a -> Maybe a -> a listToMaybe          :: [a] -> Maybe a maybeToList          :: Maybe a -> [a] catMaybes            :: [Maybe 

    kiyo_hiko
    kiyo_hiko 2011/12/18
    「maybeToList :: Maybe a -> [a]; maybeToList Nothing = []; maybeToList (Just a) = [a]」「listToMaybe :: [a] -> Maybe a; listToMaybe [] = Nothing; listToMaybe (a:_) = Just a」・・・なるほど
  • Meet the Monads

    モナドに触れる 型構築子 Maybe というモナド 例 リストもモナド 要約 この章をつうじて、Maybe 型構築子を使うので、先にすすむ前に Maybe の使いかたと定義になれておかなければなりません。 型構築子 Haskell のモナドを理解するためには、型構築子の扱いになじんでいる必要があ ります。型構築子 は多相型をもちいたパラメータ化された型定義です。 Haskell では、一つ以上の具体的な型にたいして、型構築子を適用すると 新しい具体的な型を構築できます。Maybe の定義は、 data Maybe a = Nothing | Just a です。Maybe は型構築子で Nothing および Just はデータ構築子です。Just データ構築子を ある値に適用してデータ値を構成できます。 country = Just "China" 同様に、Maybe 型構築子をある型に

  • 1