並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 236件

新着順 人気順

monadの検索結果1 - 40 件 / 236件

  • ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad

    人類には早すぎる、謎の計算ロジックに立ち向かう / Strugle with the most complicated logic ever

      ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad
    • モナドって結局何なのよ? — join to Monad v0.1.3 documentation

      モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます。Hugs では :type や :info というコマンドで hugs に型の情報などを質問することができます。例え

      • 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 - あどけない話
        • モナドって結局何なのよ? — join to Monad v0.1 documentation

          モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます: $ hugs __ __ __ __ ____ ___ _____________________________

          • 箱で考えるFunctor、ApplicativeそしてMonad

            モナドについて勉強していて見つけた英語記事を翻訳してみました。 誤訳等あれば編集リクエストやコメントください 原文: Functors, Applicatives, And Monads In Pictures - adit.io ここに単純な値(value)があります。

              箱で考えるFunctor、ApplicativeそしてMonad
            • Monad tutorial

              ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...Hideyuki Tanaka

                Monad tutorial
              • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

                この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

                  Haskell の Monad とは言語内DSLのフレームワークである - あどけない話
                • 次世代WindowsシェルMSH(コード名:Monad)を試す(前編)

                  Windowsのシェルといえばコマンド・プロンプト(cmd.exe)であるが、その機能はUNIXなどのシェルと比較するとまったく貧弱なものである。WindowsではMMC(Microsoft Management Console)などのGUIによるシステム管理/設定のインターフェイスはリッチだが、運用や管理や自動実行が容易なスクリプトによるインターフェイスは弱い。 これはアプリケーションやサービスの設定がファイル・ベースであるUNIXなどに対して、Windowsがレジストリ・ベースであることも1つの要因だろう。またコマンド・プロンプトの機能を補うために、WSH(VBScriptおよびJScript)やWindows Services for UNIX、あるいはWMI(Windows Management Instrumentation)なども用意されているが、逆にそれらがWindowsのシ

                  • Monad in TypeScript

                    tl; dr 普段はTypeScriptを書いているオタクが、すごいH本を読んだ📖 Haskellには便利な機能や考え方がたくさんあり、その一部はTypeScriptみたいなプログラミング言語でも表現できることがわかった TypeScriptでHaskellみたいなことをしようと思うと、いわゆるモナドライブラリが便利であり、中でもfp-tsが良さそうだった 以下にはfp-tsについて具体的な解説などをコードを交えて書く。 はじめに 前職で、TypeScriptのコードに type Either<Left, Right> = ... みたいなtype aliasを書いていたエンジニアさんにHaskellを勧められ、すごいH本を読んでみた。 Haskellはすごかった。もの凄く強力なチカラを2つ持っている。ガチガチな静的型付けと、モダンな関数型プログラミング技法である。美しく、型安全で、無駄

                      Monad in TypeScript
                    • モナドトランスフォーマー・ステップ・バイ・ステップ(Monad Transformers Step By Step) - りんごがでている

                      著者のMartin Grabmüller氏に許可をいただきましたので、 Haskellモナドトランスフォーマーのチュートリアルを翻訳したものを公開します。 タイポや誤訳、プログラムのミス等ありましたら、 Twitter宛@bicycle1885かコメント欄までご連絡頂けるとありがたいです。 元のテキストやプログラムは以下のリンクから得られます。 Monad Transformers Step by Step [2012/12/19] 誤りを多数訂正しました。id:qtamakiさん、ありがとうございます。 [2014/6/19] 誤りを2点訂正しました。id:daimatzさん、id:hitotakuchanさん、ありがとうございます。 Monad Transformers Step by Step Martin Grabmüller Oct 16 2006 概要(Abstract) この

                        モナドトランスフォーマー・ステップ・バイ・ステップ(Monad Transformers Step By Step) - りんごがでている
                      • 【Scala超入門~副作用の無いモナドな女への道】~0monad | Scala Girls Blog

                        はじめまして!アドテクスタジオ人事の清原です。 サイバーエージェントのアドテクスタジオでは、Scalaを使って開発されたプロダクトが多数あり、Scalaに力を入れております! この度、ほんとうに突然なのですが、まっっったくプログラムを書いたことない私がScalaを始めることになりました…! (こ、この写真はいきなり呼び出だされ、一体何を注意でもされるのか緊張しているところですね…) (いきなりScalaの本を渡されて戸惑う私…撮られているとは) そもそもScalaってなんでしょう ちょっとギャルブランドにありそうな名前ですね ってなくらいの私がScalaをゼロから学んでいく模様をレポートしていきます! 既にエンジニアの方はなんだこれ!?って感じで高見から笑っていただき、 これからScalaやプログラミング自体を始めてみようと思われる方には、「こんな私でも始められる!」と少しでも導入のお役に

                        • Option Monad - nullや存在しない値の処理を隠蔽する | Scala Cookbook

                          Option を使いこなすと、関数型言語やScalaらしいプログラミングができるようになります。 どんなときに使うのか? nullの代わりに使う 関数の結果が得られない場合など (例:Map[K,V]#get(key)の返り値は Option[V]) モナド(monad)として使い、コードの流れを妨げないようにする for-comprehensionと共に使う モナドと聞いて怖じ気付く必要はありません。これらの使い方についてこれから詳しく説明していきます。 パターンマッチでOptionの値を取得 Option[A]は値が存在するか、しないかを表すクラスで、Some(a)とNoneの二種類の値があります。パターンマッチでこの二種類の値を処理するのが基本です。 val m = Map("A" -> "Apple", "B" -> "Banana") def lookup(symbol:Stri

                          • Perlの駱駝のこぶにはMonadも入ってる : 404 Blog Not Found

                            2006年04月20日00:29 カテゴリLightweight Languages Perlの駱駝のこぶにはMonadも入ってる PerlにLambda Calculusが入っているというのは以前何度か紹介した通りだが、実はMonadも入っているのである。そして、皆さんも知らない間に使っているのである。 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」 「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 それでは、世界で一番Monadが簡単に使える言語(0番はPerl6!)での実例をいくつかお見せする。 まずは一番簡単な例から。 use strict; use warnings; package Tie::Verbose; use Tie::Scalar; use base 'Tie::StdScalar'; sub TIESCALAR{ my $

                              Perlの駱駝のこぶにはMonadも入ってる : 404 Blog Not Found
                            • モナドトランスフォーマーとmonad-control - maoeのブログ

                              アドベントカレンダーのいいネタが無いなあと思っていたところ、ちょうど週末にあたらしいmonad-controlがリリースされたので、これを紹介したいなと思いました。 その前に、モナドトランスフォーマーというかっこいい名前の代物の話をちょっとだけしましょう。 モナドトランスフォーマーと例外処理 Haskellerの皆さんはきっと息をするかのように自然にモナドを使っていることと思います。標準で提供されているモナドは単機能なので、組み合わせたくなってきます。必然的に皆モナドトランスフォーマーに手を伸ばすわけです。実際のアプリケーションのコードを書くと、多くのモナドではベースモナドがIOになるでしょうから、今度は自作したカスタムモナドスタックでIOが投げる例外をハンドルしたくなるわけです。 ここでふとControl.Exception.catchの型をみると Prelude> :t Control

                                モナドトランスフォーマーとmonad-control - maoeのブログ
                              • Data::Monad::CondVar をリリースしました - Pixel Pedals of Tomakomai

                                YAPC Asia 2011で話をする予定のモジュールをCPANへアップしました。 Data::Monad::CondVarはJSDeferred みたいなもんです。 use AnyEvent; use AnyEvent::HTTP; sub random_choice { my ($data, $headers, $cb) = @_; my (@url) = $data =~ m{href="(http:[^"]+)}g; http_get +(shuffle @url)[0], $cb; } my $cv = AE::cv; http_get "http://yapcasia.org/2011/", sub { random_choice @_ => sub { random_choice @_ => sub { random_choice @_ => sub { my ($data,

                                  Data::Monad::CondVar をリリースしました - Pixel Pedals of Tomakomai
                                • monadからeffectへ - Just $ A sandbox

                                  追記 もう少しまともなeffect入門記事を書きました myuon-myon.hatenablog.com この文章は今から5-10年後に万が一effect systemが流行り始め、今のHaskellのような立ち位置になった場合に備えて書いています。 effect systemについて Haskellはモナドを用いて純粋・非純粋を切り分けることができる言語で、computational effectを扱うために導入されたものだった。 かつては関数 A -> B で一緒くたにしていたcomputationは、 A -> T B と、文脈 T をもった関数として表現できるようになった。ところでこのようなcomputational effectとしてのモナドを言語機能に組み込むには2つの方法があって、 Meta Language方式 (Haskell) Programming Language

                                    monadからeffectへ - Just $ A sandbox
                                  • モナモナ言わない モナド入門 第二版 - monad.gby

                                    1 2012.11.18 2 1 3 2 DSL 4 5 Q) A) 6 Q) A) 7 8 9 Haskell 10 11 Parser data Parser a = Parser (String -> [(a,String)]) Parser pwrap :: a -> Parser a pwrap v = Parser $ \inp -> [(v,inp)] Parser pbind :: Parser a -> (a -> Parser b) -> Parser b pbind p f = ... string :: String -> Parser String string [] = pwrap [] string (x:xs) = char x ‘pbind‘ \v -> string xs ‘pbind‘ \vs -> pwrap (v:vs) 12 IO data IO

                                    • Indexed Monadの世界 - モナドとわたしとコモナド

                                      もっと、モナドの力を引き出したくはないか? え?アクションの前後で型を変えたい?いやいやいや、モナドは自己関手の圏上の単なるモノイドだよ、そんなことができ…る…!?えっ、できるの…マジで…? できる。そう、Haskellならね。 {-# LANGUAGE QuasiQuotes #-} import Control.Monad.Indexed.State import Control.Monad.Indexed import Language.Haskell.IndexedDo hoge :: IxState Int [Int] () hoge = [ido|do imodify (*10) imodify show imodify reverse imodify (++"123") imodify $ map fromEnum |] *ghci> runIxState hoge 42 (

                                        Indexed Monadの世界 - モナドとわたしとコモナド
                                      • JavaでMonadをはじめからていねいに :: Igreque -> Info

                                        JavaでMonadをはじめからていねいに by Yuji Yamamoto on August 28, 2016 「モナドについてSwiftで説明してみた」という記事などで指摘されているように、プログラマー向けにMonadを説明した記事はサンプルがHaskellで書かれていることが多いので辛いですよね。 HaskellではMonadは「ないと文字通りプログラムが書けないぐらい」大事なもので、入出力処理や例外処理、ダイナミックスコープのシミュレーション、非決定計算など、普通の関数では難しい、非常に様々な機能の実装に使用されています。 その一方、MonadはC言語のポインターに並んでHaskellを学ぶ上での障害である、なんて言われたりもするとおり、他言語ユーザーからHaskellを敬遠させる大きな要因の一つともなっています。 そんな悲しい現状を少しでも改善するために、上記の記事を参考にしつ

                                        • Easy Monad

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

                                          • Applicative よりも Monad の方が力が強い理由 - あどけない話

                                            Applicative よりも Monad の方が力が強い理由を考えるためのメモ。これから議論するためのたたき台なので、そう思って読んで欲しい。 コンテナで包む return Monad とは、コンテナである。コンテナは、文脈を表す。たとえば、Maybe というコンテナは、失敗するかもしれない計算という文脈を表す。 通常の値や関数を文脈に入れるための API が return である。 return :: a -> ma コンテナ内での関数適用 <*> 以下のような型を持つ関数を考える。 f :: a -> b この関数を return を使って文脈の中に入れてやると、型は次のようになる。 return f :: m (a -> b) この関数を、コンテナ内にある値に適応するための API が (<*>) である。 (<*>) :: m (a -> b) -> m a -> m b コンテ

                                              Applicative よりも Monad の方が力が強い理由 - あどけない話
                                            • Monadがないなら、Longhornにする意味はない

                                              次世代WindowsのLonghornに新スクリプト言語のMonad(Microsoft Shellのコードネーム)を組み込むという計画がキャンセルに。Monadを搭載しないLonghornにアップグレードする意味がどこにある? いったいLonghornはどうなっているのだろう。 まず、WinFSが外された。次に、Longhornは結局.NET Frameworkベースにはならないことが分かった。 そしてMicrosoftによると今度は、シェルとスクリプト言語の素晴らしいコンビネーションであるMonadも、Longhornには組み込まれないという。 WinFSを待望していた人もいたが、わたしはまったくどうでもよかった。世界はプロセッサ集約型のファイルシステムを本当に必要としているか? そうは思わない。 わたしはReiserFS(Reiser File System)の作者、ハンス・ライザー

                                                Monadがないなら、Longhornにする意味はない
                                              • Haskell-style monad do-notation for Ruby

                                                This domain has been purchased and parked by a customer of Loopia. Use LoopiaWHOIS to view the domain holder's public information. Are you the owner of the domain and want to get started? Login to Loopia Customer zone and actualize your plan. Register domains at Loopia Protect your company name, brands and ideas as domains at one of the largest domain providers in Scandinavia. Search available dom

                                                • Purescript with Monad

                                                  Learning Deep Architectures for AI (第 3 回 Deep Learning 勉強会資料; 松尾)Ohsawa Goodfellow

                                                    Purescript with Monad
                                                  • Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません

                                                    モナドのすべての継続モナドのところが簡潔で、概念とかもあまり明示的に説明してなくて理解に苦労したので、ポイントをメモ。誤りなど、乞うご指摘。 newtype Cont r a = Cont { runCont :: ((a -> r) -> r) } instance Monad (Cont r) where return a = Cont $ \k -> k a (Cont c) >>= f = Cont $ \k -> c (\a -> runCont (f a) k) 概要的なこと 継続といいつつ、Contが表すのは継続というより、CPSな関数。*1 CPSな関数は、引数に関数をとり、自分の仕事の最後でその関数(継続)を呼ぶ。 CPSな関数に、継続として別のCPSな関数を渡す、その別のCPSな関数に継続としてさらに別のCPSな関数を渡す、…の連鎖(CPSな関数のネスト)が、全体として

                                                      Haskellの継続モナド(Continuation Monad)を理解するポイント - よくわかりません
                                                    • CoproductとInjectを使ったFree Monadの合成とExtensible Effects - xuwei-k's blog

                                                      Scaladays2014の写真がtwitter上で流れてきて「あーまたrunaroramaさん、Free Monadの話してるのかー」と思ったら、たしかにFree Monadの話もしてたみたいですが、それの発展形(?)的な感じで、Coproductや、Injectという型クラス(?)の話をしていたようです。 Woah, Coproducts (URL as replacement for transformer stacks look pretty cool! URL /cc @runarorama 2014-06-17 20:43:56 via Twitter Web Client それで、*1コードを読んでみたら、それなりにある程度理解できた気がするので、解説を書いてみます。*2 最初に断っておくと、タイトルに"Extensible Effects"と入れましたが、Extensibl

                                                        CoproductとInjectを使ったFree Monadの合成とExtensible Effects - xuwei-k's blog
                                                      • パラダイムとしてのモナド ~ Monad as a Paradigm ~ - 純粋関数空間

                                                        昨日、日本ユニシス様にて技術交流会が開催されまして、 そこで講師として発表させて頂きました。 Haskellの話ということで、どういう話にするか悩みましたが、 プログラミングモデルからHaskellの面白さを語るという いつにもなく(あるいはいつもどおりの)無謀な内容になりました。 ぎりぎりまでどう言うシナリオにするか悩んだ末、これまたいつもどおりの 取り留めのない話になってしまいましたが、 面白かったといってくださる方がいてよかったです。 前半は私が最近面白いと思ったHaskellのライブラリ・アプリケーションの話を織りまぜつつ Haskellの魅力を紹介するパートで、 後半は最近の私のモナドに関する持論を展開するという謎パートです。 モナドというのは何者なのか なぜモナドなのか モナドには何が出来るのか なぜHaskellでモナドを扱うのか IOモナドとは何なのか これらを解き明かしつ

                                                        • jQuery is a Monad

                                                          It’s said that every Haskell programmer writes their own monad tutorial, and with good reason: once you finally understand the definition and capabilities of a monad, you’ll be eager to try and break the mystique surrounding the concept of monads as a whole. To the outsider, monads are an impenetrable barrier to truly understanding Haskell; they’re cursed with a very unfortunate name, have bizarre

                                                            jQuery is a Monad
                                                          • モナドって結局何なのよ? — join to Monad v0.1.3 documentation

                                                            モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます。Hugs では :type や :info というコマンドで hugs に型の情報などを質問することができます。例え

                                                              モナドって結局何なのよ? — join to Monad v0.1.3 documentation
                                                            • Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog

                                                              これは私用の覚え書きを適当に整形したもの(というか Sphinx で hatena 記法にしただけだけど)。だから他の人が読んで判るように全く書いていない。OCaml や ML のモジュールシステム、 value polymorphism、さらには relaxed value polymorphism、そして日本語を知っている人に、ならば何か役に立つかもしれない。多分地球上で数十人もいない。まあいいや。これ見てウヘェ、と思うなら例えば F# みたいな ML モジュールシステムを放棄して class 階層を採用した言語とか、 Haskell みたいな type class でモジュールを実現したのとかを使うか、それとももっと超カッコいいナントナクヒューリスティックで便利キワマルな型推論補助のついたモジュールシステムを考えて OCaml に足して公開すればいい。正直私もここまで来ると ML モ

                                                                Monad にしちゃう functor を通して今時の OCaml モジュールプログラミングを俯瞰 - camlspotter’s blog
                                                              • Operational Monad

                                                                Mitsutoshi Aoe/maoe @ma0e freeモナドとsymanticsは目的が違うので直接比較するものじゃないと思うのだけど違うのかな。例えばASTとインタプリタとプリティプリンタを作る場合、ASTのデータの構築というか接ぎ木を簡単にmonadicなAPIにできますよというのがfreeモナドで 2013-06-24 20:47:52 Mitsutoshi Aoe/maoe @ma0e symanticsの方はタグがいらないとかGADTみたいなリッチな型がなくてもいいとかexpression problemを解決できるよとかそういう話だと思う。 2013-06-24 20:49:12

                                                                  Operational Monad
                                                                • Monad (functional programming) - Wikipedia

                                                                  In functional programming, a monad is a structure that combines program fragments (functions) and wraps their return values in a type with additional computation. In addition to defining a wrapping monadic type, monads define two operators: one to wrap a value in the monad type, and another to compose together functions that output values of the monad type (these are known as monadic functions). G

                                                                    Monad (functional programming) - Wikipedia
                                                                  • FutureとEitherの話の続き(ApplicativeとMonadの違い) - xuwei-k's blog

                                                                    昨日書いたこれ ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 の中で、 実は今回の例だけだと、Applicativeの範囲でいけるので、必ずしもモナドトランスフォーマーは必須ではありません と書いたところ、以下のような反応をもらったので Applicative でダメな例気になる 2014-09-20 00:08:37 via Twitter for Websites 例を思いついたので、それも書いておきましょう。丁寧にScalaz初心者向けに説明するの疲れたので、以前よりは雑に要点だけ書きます、ご了承ください。今回も先にコード例のgist貼っておきます。 https://gist.github.com/xuwei-k/051c3b00129b7a0dfcd6 そもそも「Applicativeで範囲よい」「ApplicativeではダメでMonad必要」は、モナ

                                                                      FutureとEitherの話の続き(ApplicativeとMonadの違い) - xuwei-k's blog
                                                                    • monad-control

                                                                      Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. August 25, 2011By Michael SnoymanView source on Github Overview One of the powerful, and sometimes confusing, features in Haskell is monad transformers. They allow you to take different pieces of functionality- such as mutable state, error handling, or logging- and compose them tog

                                                                      • 第51回 FunctorとMonadの間にあるApplicative

                                                                        第3回でFunctorクラスとMonadクラスを紹介しましたが,ここ数年の間に,FunctorクラスとMonadクラスの関係に少し変化が起こりました。Functorクラスよりも強く,Monadクラスよりも弱いクラス,すなわちFunctorクラスとMonadクラスの中間に相当するApplicativeクラスが現れ,広く使われるようになったのです。特にパーサー・ライブラリでは,Applicativeクラスおよび「Applicative版のMonoid」であるAlternativeクラスが欠かせないものになっています。 第48回でのparTraversable関数の説明,および第50回で取り上げたparMap関数/parMapM関数の定義の文脈部分で登場したTraversableクラスも,Applicativeとのかかわりが深いクラスです。 Applicativeに対する理解は,今やHaskel

                                                                          第51回 FunctorとMonadの間にあるApplicative
                                                                        • C#でわかる こわくないMonad

                                                                          Kouji MatsuiF#, IL, metaprogramming, C#, LINQ. Microsoft MVP for VS and DevTech. CSM, CSPO. Bicycle rider. at self employed

                                                                            C#でわかる こわくないMonad
                                                                          • Windowsの新しいコマンドシェル「Monad」の最新ベータ版が公開

                                                                            米Microsoftは26日(米国時間)、Windowsの新しいコマンドシェル「Monad」の最新ベータ版「Windows "Monad" Shell Beta 3.1」を公開した。サポートされるプラットフォームは、Windows Server 2003/Vista/XPなどのシステム(32bit版)が動作する、.NET Framework 2.0 RTM版が導入済の環境。パッケージのファイルサイズは約2.1MB、ダウンロードには.NET Passportへの登録が必要。 Monad Beta 2からの主要な変更点としては、コマンドレットのアセンブリを動的に読み込む「mshsnapin」コマンドレットの追加のほか、コマンドレットのパラメータとして与えられた数字が文字列ではなく数値として扱われるよう仕様が変更されたことが挙げられる。また、不具合の修正やヘルプ文書のMicorosoft MAM

                                                                            • 米Microsoft,オブジェクト指向コマンド環境「Monad」のベータ1を提供

                                                                              米Microsoftは先週,.NETに対応したスクリプト言語実行環境「Monad」(開発コード名)のベータ1をようやく提供開始した。Monadの最初の説明から2年がたっている。 当初,MonadはLonghornだけのために予定されていた。しかし,今では「Microsoft Command Shell」と呼ばれ,Windows XPとWindows Server 2003にも別に出荷されることになっており,重要なシェルに位置付けられている。 この技術はとても優れたもので,論理的かつオブジェクト指向のコマンド・ライン環境を提供する。その環境の中では,各オブジェクトのプロパティとメソッドを即座に発見できるはずだ。Windowsに現在あるDOSのようなコマンド・ラインに不満を持っているのなら,きっと気に入るだろう。

                                                                                米Microsoft,オブジェクト指向コマンド環境「Monad」のベータ1を提供
                                                                              • 「やらなければならないこと」としてのHaskellのMonad というタイトルで発表しました。 :: Igreque -> Info

                                                                                「やらなければならないこと」としてのHaskellのMonad というタイトルで発表しました。 by Yuji Yamamoto on May 11, 2014 関数型LT大会にて、発表させて頂きました。 「やらなければならないこと」としてのHaskellのMonad 上記の通りこのサイトにもアップロードしましたが、 やっぱりSlideshareにもアップロードしました。 slidyを使うと印刷するだけでPDFにできるから便利ですね! うわぁ小さくて見づれー。本番ではブラウザで拡大率調整してたしなぁ。 早くslidyのcss整えないと。 関数型LT大会、面白かったですね。 個人的な主な収穫を上げるならば、 LLVMのバイトコードをHaskellで書くためのpackageがあることとか、 PureScriptというAltJSがアツそうだということとか、 Operational Monadの実

                                                                                • 関手、Applicative、Monadの法則 - あどけない話

                                                                                  Monadとは、Applicativeであるデータ構造で、(>>=)演算子を提供し、それがMonad法則を満たすものである。 正確に表現するとこうなんですが、「はぁ?」っ感じですよね。「満たすべき法則」とか言われると、まったく理解できません。でも、オススメの形に持っていくための変換規則と捉えると分かりやすいのではないかというのが、この記事の主旨です。 関手 関手法則は以下の2つです: 単位元: id <$> x = x 合成 : f <$> (g <$> x) = (f . g) <$> x 左辺が冗長な形、右辺がオススメの形です。これはいいですよね? Applicative Applicative法則は以下の4つです(<*>は左結合)。 単位元: pure id <*> x = x 準同型: pure g <*> pure x = pure (g x) 交換 : x <*> pure y

                                                                                    関手、Applicative、Monadの法則 - あどけない話