並び順

ブックマーク数

期間指定

  • から
  • まで

41 - 55 件 / 55件

新着順 人気順

モナドの検索結果41 - 55 件 / 55件

  • プログラムから圏のことばまで,或はモナドについて(前半) - エムスリーテックブログ

    こんにちは,エムスリーエンジニアリングGの榎田(@niflh)です.趣味は数学とテレビゲームです. 以前の記事 で Scala を通して関数型を勉強した話をしましたが,最近社内で Scala with Catsを読む勉強会をしています.この本は,Cats という「Scala で関数型プログラミングをサポートするライブラリ」を勉強しつつ,関数型特有の概念に慣れ親しむことを目的としたものです. この勉強会も,参加者の皆さんと二人三脚で進み,モナドを扱う章に入りました.そんな中,参加者の一人から,次のような意見が出ました. モナドをやるとよく圏論が出てくるので,かじってみると面白い一方,よくわからないことも多い.プログラミング上のどの操作が圏論とかのどの操作に紐付いてて,何が嬉しいのか,あたりがまとまってると嬉しい. 尤もだと思ったので,色々調べて考えた結果が本稿です.一記事には長すぎるようにも

      プログラムから圏のことばまで,或はモナドについて(前半) - エムスリーテックブログ
    • dry-monadsを使ってRubyでモナドの夢を見る - Qiita

      はじめに 皆さんはRuby、好きですか?僕は好きです。 皆さんはモナド、好きですか?僕は好きです。 好きなものと好きなもの、どっちも使いたくなるのが人間の性。 どうにかしてRubyでモナドを使いたい! ということで、Rubyでモナドを使って、Rubyでよく書くありがちなコードをいい感じにしていきます。 モナドってなに? モナドはHaskellなどの関数型言語で使われる概念です。 細かい定義は他の記事に任せますが、簡単にいってしまうと「書いたコード(文字通り)よりも外の世界から受ける影響に安全にアクセスする方法」です。こういうのをプログラミングでは「副作用」って言ったりします。 モナドについてはこことここの記事が個人的に勉強になりました。 モナドが力を発揮する場面としてよくあげられるのが「IO」です。IOはまさに「自分が書いたコードの外から受ける影響」ですよね。 入力ではコードを実行するまで

        dry-monadsを使ってRubyでモナドの夢を見る - Qiita
      • Scala と Free モナドで入門するモナド - Qiita

        この記事は Scala Advent Calendar 2022 の 21 日目の記事です。1 It's a standing joke in the Haskell community that every Haskell programmer, as part of his or her learning process, will eventually write one or more monad tutorials. I'm certainly no exception. 拙訳: Haskell コミュニティでは、「Haskell プログラマは、学習プロセスの中でモナドの解説記事の一つや二つをいつしか書くものだ」というのがお決まりのジョークになっている。当然私も例に漏れない。 Yet Another Monad Tutorial (part 1: basics) 概要 モナドとし

          Scala と Free モナドで入門するモナド - Qiita
        • サルでもわかるIOモナド①-副作用の除去 - Hot Heart, Cool Mind.

          このところ、仕事の手が空いたときに、Haskell というプログラム言語を勉強しています。Haskellは僕がふだん使っているJavaなどとはかなり趣きが異なるので、 考えさせられる点が多く、気分転換にはぴったりです。 とはいえ、最初はさっぱり理解できない点もありました。「IOモナド」です。 Web上の色々な資料を読んでいるうちにだいたいのところは理解できたのですが、そうなってみると、今度は、 最初に読んだ何冊かの入門書やWeb記事でのIOモナドの説明の仕方が気になってきました。 こうした記事は、素人向けに易しくIOモナドを説明しようとして、その結果、かえって読者を煙に巻いてしまっている面があるんじゃないかと思います。 IOモナドは、Haskell の鬼門とか呼ばれているようですが、わかってみるとさほど難しいものではありません。であれば、僕自身がきわめて素人くさくIOモナドを理解した仕方を

            サルでもわかるIOモナド①-副作用の除去 - Hot Heart, Cool Mind.
          • アドバイスを求める人と求めない人 - モナドのクラウド研究【スマブラSP】

            (非VIPの人やVIP勝率が安定しない人向け) 本記事では アドバイスを求める人と アドバイスを求めない人 どちらが上手くなるのが早いのか…… 自分の経験を元に書いていきます。 あくまで、個人的な考えですので 参考程度に見てくれると嬉しいです。 ありがたいことに僕はTwitterのDMで けっこうな頻度で対戦を申し込まれます。 (ほとんどがクラウド使い) そして二つのパターンがあります。 一つ目は 「対戦を希望しつつ、アドバイスを求める人」 (アドバイスで問題点を認識し上手くなりたい人) 二つ目は 「対戦を希望するが、アドバイスは求めない人」 (自分で問題点を見つけて上手くなりたい人) どちらも上手くなりたいという目的は同じです。 ただ、上手くなるためのやり方が違うといった感じでしょうか。 どちらの方が上手くなるのが早い? この2パターン、どちらかのやり方をしている人をたくさん見てきました

              アドバイスを求める人と求めない人 - モナドのクラウド研究【スマブラSP】
            • Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた - Qiita

              ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。 この記事は次の記事の Python 版です。同じことが出来るはずなので確認したくなりました。 ジェネレーターで関数モナドとStateモナドを模倣してみた 結果的に、ジェネレーターの return の仕様の変遷や、デコレーターが有用なことなどが分かりました。 実装 実装を並べると、関数モナドと State モナドの差分が分かりやすいです。 関数モナド State モナド

                Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた - Qiita
              • (非Haskellerのための)わかったつもりなモナド - Qiita

                関数型プログラミングについて調べるとよく出てくるのが「モナド」の概念です。 モナドはなんかしらんが最強らしい モナドはHaskellとなんか関係あるらしい モナドがあると純粋な関数型言語(参照透過な言語)でも副作用が扱えるらしい でも 適当に調べてもモナドってなんなのかよくわからん…… あとHaskell難しいしよくわからん…… (Haskell仕事で使わないので)役に立つのかもわからん…… そんなもやもやを抱えつつ生きていたところ、最近『関数プログラミング実践入門』とか『圏論の歩き方』とかの本でなんとなくモナドがわかったつもりになったので、勉強メモ的な意味でも記事にしてみます。 あと、Haskellを使わない人向けに、主にJavaを使って説明していきます。 モナドを理解するとはどういうことか プログラミングの概念としての「モナド」を理解するには、おそらく以下の三つを理解することが必要です

                  (非Haskellerのための)わかったつもりなモナド - Qiita
                • Extensible Effectsでトランザクションモナド“Fujitask”を作る - Qiita

                  はじめに ScalaやHaskellなどではモナドを利用して副作用1を抽象化するということがしばしば行われる。FujitaskはScalaで実装された1つのモナドで、データベースへのアクセスに関するトランザクション制御を抽象化した。ところがモナドはReader[Future[Either[Error, Option[A]]]]のようにいくつものモナドが入れ子になってしまったとき、Scalaのfor式のようなモナド構文では内側のモナドへのアクセスが難しくなってしまう。 この問題へのアプローチとして有名なものにモナドトランスフォーマーがある。あるモナドトランスフォーマーTは任意モナドMを引数に取ってT[M]となる新しい1つのモナドとなり、このモナドT[M]はTとMの両方のモナドの能力を持つ。たとえばエラーと成功を表すようなモナドトランスフォーマーEitherTと、非同期実行を表すモナドFutu

                    Extensible Effectsでトランザクションモナド“Fujitask”を作る - Qiita
                  • ジェネレーターで関数モナドとStateモナドを模倣してみた - Qiita

                    ジェネレーターを DSL のように使って関数モナドと State モナドを模倣してみました。記述をそれっぽく見せることに重点を置いたため、bind や return を正確に実装したわけではありません。 関数モナド(のようなもの) See the Pen Function Monad by 七誌 (@7shi) on CodePen. State モナド(のようなもの) See the Pen State Monad by 七誌 (@7shi) on CodePen. この記事には Python 版があります。 Pythonでもジェネレーターで関数モナドとStateモナドを模倣してみた 実装 実装を並べると、関数モナドと State モナドの差分が分かりやすいです。 function functionMonad(g) { return state => { let it = g(), re

                      ジェネレーターで関数モナドとStateモナドを模倣してみた - Qiita
                    • もう諦めない圏論基礎―モノイドからモナドへ― - Qiita

                      import Prelude hiding (Monoid(..)) class Monoid s where e :: s (<>) :: s -> s -> s 関手 $T \colon \boldsymbol{C} \longrightarrow \boldsymbol{C}$ に 自然変換 $\mu \colon T \cdot T \Longrightarrow T$ と 自然変換 $\eta \colon \mathrm{id}_{\boldsymbol{C}} \Longrightarrow T$ の情報を加える。 次の2つの条件を満たすとき、 組 $(T,\mu,\eta)$ はモナドである。 (結合律)$\mu \cdot T \ggg \mu = T \cdot \mu \ggg \mu$ が成り立つ。 可換図式とストリング・ダイアグラムでそれぞれ以下のように描ける。

                        もう諦めない圏論基礎―モノイドからモナドへ― - Qiita
                      • プログラミング.モナド カテゴリーの記事一覧 - Hot Heart, Cool Mind.

                        少し間が空いてしました。前回はアクション(IO操作の仕様書)とモナドが何とかつながったところで終わりました。 今回は両者の関係をもう少し緻密に検討してみましょう。 ==== アクションとモナド要件 (>>=)演算を備えただけでは「なりかけモナド」に過ぎま…

                          プログラミング.モナド カテゴリーの記事一覧 - Hot Heart, Cool Mind.
                        • Amazon.co.jp: ノンフィクションにだまされるな! 百田尚樹『殉愛』上原善広『路地の子』のウソ (モナド): 角岡伸彦: 本

                            Amazon.co.jp: ノンフィクションにだまされるな! 百田尚樹『殉愛』上原善広『路地の子』のウソ (モナド): 角岡伸彦: 本
                          • Traversable API - モナドとわたしとコモナド

                            与えられたConnectionを通じて、指定したKeyに対応するByteStringを取り出すような、シンプルなKey-ValueストアのAPIを考えてみよう。 type Key = ByteString fetchOne :: Connection -> Key -> IO ByteString ネットワーク越しにたくさんのデータを取得したいとき、何度もこれを呼び出していては効率が悪い。一度にまとめて取り出せるように拡張するなら、このように書ける。 fetchMany :: Connection -> [Key] -> IO [ByteString] 悪くはないが、この型はたとえば「["foo", "bar"]を要求したのに返ってきたのは[]」のような振る舞いを許してしまうため、使い手に不必要なパターンマッチを強いる。だが、リスト[]にちょっとした一般化を施すだけでそれを防ぐことが可能だ

                              Traversable API - モナドとわたしとコモナド
                            • 継続モナドで立ち向かうローンパターンとEither地獄 - 星にゃーんのブログ

                              Haskellでファイルなどのリソースの解放を保証するテクニックとして、ローンパターン(Loan Pattern)がある。withFile :: FilePath -> IOMode -> (Handle -> IO r) -> IO rなどがその例だ。 ローンパターンによる関数を複数使ったプログラムは、無名関数のネストが深くなる。 main = do withFile "src.txt" ReadMode \src -> withFile "dst.txt" WriteMode \dst -> ... この問題には、継続モナドContTを使ったきれいな解決策が知られている。 main = evalContT do src <- ContT $ withFile "src.txt" ReadMode dst <- ContT $ withFile "dst.txt" WriteMode .

                                継続モナドで立ち向かうローンパターンとEither地獄 - 星にゃーんのブログ
                              • モナドをわかったつもりになる - APC 技術ブログ

                                はじめに こんにちは、コンテナソリューション事業部の髙井です。 時が過ぎるのは早いものでもう年末ですね。 さて、よく耳にするのに調べても難しそうでいまいち正体のつかめない言葉ってありませんか。 たとえば「モナド」もそのひとつだと思います。 ということで今日は「で、結局モナドってなにが嬉しいんだっけ?」に少しでも近づくことを目標に書いていきたいと思います。 まずは調べる ネットで調べたら「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」と書いてあって試合終了したので、とりあえず関連しそうな本を数冊読んできました。 すごいHaskellたのしく学ぼう! 作者:MiranLipovacaオーム社Amazon [増補改訂]関数プログラミング実践入門 ──簡潔で、正しいコードを書くために WEB+DB PRESS plus 作者:大川徳之技術評論社Amazon JavaScrip

                                  モナドをわかったつもりになる - APC 技術ブログ