タグ

Monadに関するpotato777のブックマーク (9)

  • IO inside - HaskellWiki

    Haskell I/O can be a source of confusion and surprises for new Haskellers - if that's you, a good place to start is the Introduction to IO which can help you learn the basics (e.g. the syntax of I/O expressions) before continuing on. While simple I/O code in Haskell looks very similar to its equivalents in imperative languages, attempts to write somewhat more complex code often result in a total m

  • ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 - xuwei-k's blog

    組み合わせるとはつまりアレのことを書くのですが、一応それほど前提知識無くても理解できるように書いてみます。さて、なぜいきなりEitherとFutureか?というと play2とか使ってると、Futureがよく出てくる Futureをそこら中でAwaitしたらFuture使う意味がないので、Future[A]をmapやflatMapなどでどんどん連鎖させて、メソッドの型にFutureが大量に出現! Futureは非同期に行われる処理であり、そこで例外発生したら、その中に例外を含むしかない(単純に例外投げるわけにはいかないというか不可能) Scala標準ライブラリのFutureは、Throwable型で例外を保持できるようになってる 逆にいうと、Throwableでしか保持できない 例外の種類が多くなってきて、プログラムが複雑になった場合、Throwableではなくもっと限定された独自のエラー

    ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 - xuwei-k's blog
  • 「Javaで継続モナド」をScalaに翻訳/Scala Advent Calendar 2013

    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

    「Javaで継続モナド」をScalaに翻訳/Scala Advent Calendar 2013
  • erlando - ErlangでMaybeモナドとdo記法を使う - Qiita

    ErlangでHaskell風の Maybeモナド と do記法 を使う方法。エラーチェックなどを繰り返し行うコードが簡潔に記述できる。RabbitMQの開発者が公開した erlando で実現する。 erlandoにはListモナドやStateモナドなども含まれており、もちろん自分で新たにモナドを書くこともできる。また一部のモナドではMonadPlus型も実装されており guard/2 関数などが使える。さらに、関数の部分適用を読みやすく記述できる「cut」や、関数のインポート時に関数名を変更することで名前の衝突を避ける「import as」という機能もある。 maybe(A) 型 Erlang/OTPでは処理が失敗するかもしれない関数は、失敗したことを「例外」ではなく、「戻り値」で表現する。例えば lists:keyfined/3 ではキーが見つからない場合 false を、 file

    erlando - ErlangでMaybeモナドとdo記法を使う - Qiita
    potato777
    potato777 2013/10/20
    "ErlangでHaskell風の Maybeモナド と do記法 を使う方法。エラーチェックなどを繰り返し行うコードが簡潔に記述できる。RabbitMQの開発者が公開した erlando で実現する。"
  • Java8のOptionalがモナドになったよ! - きしだのHatena

    Java8にはOptionalクラスが導入されたのですが、5月にエントリを書いた時点ではモナドではありませんでした。 Java8でのプログラムの構造を変えるOptional、ただしモナドではない それが、5月末にどうもソースにモナドに必要なメソッドが追加されたらしいということになって、いつ使えるようになるか待っていたら、いつの間にか使えるようになっていました。 Optional (Java Platform SE 8 b101) こちらからダウンロードできます。 JDK8 Early Access Releases ― Project Kenai 他にもいくつか便利メソッドが追加されたおかげで、このようなコードが書けるようになりました。 String str = "abcd"; Optional.ofNullable(str) .map(st -> st.toUpperCase()) .f

    Java8のOptionalがモナドになったよ! - きしだのHatena
  • Scalaでの例外処理 - Either,Option,util.control.Exception - ( ꒪⌓꒪) ゆるよろ日記

    今日はScalaの例外処理について解説しますよ。 基 - try,catch,finally 例外処理の基は、try,catch,finallyです。これはJavaと同じですね。 ただし、Scalaでのtry,catch,finallyは値を生成します。つまり、実行されたブロックの値が評価されます。 scala> val n = try{ "99".toInt } catch { case e:Exception => -99 } n: Int = 99 scala> val n = try{ "foo".toInt } catch { case e:Exception => -99 } n: Int = -99 上記のように、catch節には "case e:Exception => ..."のようなパターンマッチを書くことで、対応する例外の型に応じて補足することができます。try,

    Scalaでの例外処理 - Either,Option,util.control.Exception - ( ꒪⌓꒪) ゆるよろ日記
  • All About Monads モナドのすべて

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • Freeモナド in Scala - ( ꒪⌓꒪) ゆるよろ日記

    噂のFreeモナドをScalaで写経してみた。 Freeモナドは、取り込む型SのFunctorと組み合わせて、Functorの特性に応じたモナドを得ることができるものらしい。 そろそろFreeモナドに関して一言いっとくか - fumievalの日記 Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); } Haskell for all: Why free monads matter stackless scala with free monad 独習 Scalaz: 18日目 | eed3si9n ( ゚д゚) 「ナンデ!?モナドナンデ!?」 モナドがセブンセンシズならFreeモナドはエイトセンシズくらいなのでかなり小宇宙を高めないと理解が追いつ

    Freeモナド in Scala - ( ꒪⌓꒪) ゆるよろ日記
  • 「モナドは象だ(Monads are Elephants)」日本語訳 — Japanese Translation of Monads are Elephants v1.0 documentation

    「モナドは象だ(Monads are Elephants)」日語訳¶ この文章は、以下の記事の翻訳です。 Monads are Elephants: http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-2.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-3.html http://james-iry.blogspot.com/2007/11/monads-are-elephants-part-4.html JAMES IRY:ONE DIV ZERO: http://james-iry

  • 1