タグ

monadに関するzbihのブックマーク (6)

  • GitHub - sledorze/monax: Brings monads with nice syntactic sugar to Haxe

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - sledorze/monax: Brings monads with nice syntactic sugar to Haxe
  • Monax - crossplatform Monads via haXe.

  • 「値が無い」ということをどう表現するか、あるいはOption型について - Line 1: Error: Invalid Blog('by Esehara' )

    はじめに 現在、「イケている」と呼ばれる関数型言語について、大抵の場合は「Option型」と呼ばれる型が実装されていたりします。具体的には、OCamlとScalaであり、HaskellにもMonadの一つとしてMaybe型というものがあります。 この「Option型」とは何か、といえば、要するに「値があるかどうかわからない型」という型であり、値として「値を持っていない」か、「値を持っている」という二つのパターンをとります。そして、「値を持っている」という状態のときだけその値に対してアクセスすることができます。 とはいえ、これだけだと何が嬉しいのかさっぱりわかりませんので、その辺りについて、少しだけメモしておきます。 「値が無い」ということを表現すること 素朴に考えて、「何らかの値が無い」ということを示すためには、二つの方法で表現することが出来ます。 値が無い場合は、None(Python

    「値が無い」ということをどう表現するか、あるいはOption型について - Line 1: Error: Invalid Blog('by Esehara' )
  • エラー処理の地学史、もしくはあなたがMaybeモナドを使うべき理由。 | 月と燃素と、ひと匙の砂糖

    (以下、カノッサの屈辱(テレビ番組)のノリでお願いします) コンピュータの理論を確立したチューリング。彼は、無限のテープの長さを持ち、単なる計算を行うだけのチューリングマシンを夢想した。 しかし、我々の生きる現実世界におけるコンピュータでのプログラムに於いては、計算の失敗=エラーが発生するのは避ける事ができない宿命である。ネットワーク接続失敗、ファイルが見つからない、メモリが確保出来なかった…等々。すべてのエラーを書き出すには、それこそ無限の長さの紙が必要であろう。プログラム進化の歴史は例外との戦いであると言っても過言ではない。今回の講義では、プログラミング言語の様々な進化のうちの「エラー処理」に着目し、その長い戦いの歴史を概観する。 まずは、いにしえの先エクセプション紀におけるエラー処理を見てみよう。 先エクセプション紀:エラーコード-1の時代 エクセプション(exception)と呼ば

  • QAで学ぶMonad - あどけない話

    この記事は、Monad でつまづいた Haskeller のための Monad 再入門です。 Monadとは何ですか? Monad とは、単なる型クラスの一つです。難しいという風評もありますが、それ以上でもそれ以下でもありません。 この型クラスのメソッドは、return と >>= です。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a つまり、以下を満たす型の集合が Monad です。 m a で表現できるように一つの型変数を格納するコンテナ型 >>= と return を実装 return は新しいコンテナを作り、>>= は二つのコンテナを合成します。 Monad のインスタンスは失敗系と状態系に大別できます。以下に代表的なインスタンスを示します。 失敗系: Maybe、[] (リスト)

    QAで学ぶMonad - あどけない話
  • Easy Monad

    8. Monad この文書では Monad について述べます。Monad は成功しないかも知れない 計算を組み合わせる手法で、探索、IO、構文解析 などに使われます。 Monad は実はそれほど難しい概念ではありません。 "Haskell は Monad を使って参照透明性をおかすことなく IO を実現している。" といううたい文句や、"Monad を理解するのは難しいかもしれない" などという脅し を気にしないで、Haskell 98 にある定義を見れば分かりやすいと思います。 上級 Haskeller は Monad を駆使して難しいことをやりますが、 それは Monad が難しいのではなく、彼らのやっていることが難しいだけです。 つまり、Monad を使うと難しいことが出来るが、Monad そのものが難しいわけではない ということです。 1. Monad は class Haskel

  • 1