並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 25 件 / 25件

新着順 人気順

Monadの検索結果1 - 25 件 / 25件

  • 「Haskellのモナド完全に理解した」試験問題

    Haskellは勉強したけどモナドを本当に理解したって言えるのか自信がない… \そんな人向けの試験問題を作りました!/ これから実施する試験問題を、10問中8問正解すればあなたはHaskellのモナドを完全に理解しています。私が保証します! それではさっそく〜〜 第一問 まずは緊張をほぐしましょう。 Haskellの Monad は○○○○である ○○○○に当てはまるのは以下の選択肢のうちどれでしょう? 型 関数 型クラス 型シノニム 答え

      「Haskellのモナド完全に理解した」試験問題
    • 【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 - Qiita

      動機 最近、chatGPTにいろいろ尋ねるのが流行っているらしい。Haskellで有名なモナドの概念がなぜ導入されたか尋ねている人を見かけて、そういやそういう記事見たことないなと思ったので適当に調べた。 一次ソース 元ネタは以下のマイナーだと思われる文献 An abstract view of programming languages Eugenio Moggi教授のあんま読まれてない方の論文 Denotational Semantics Peter D. Mosses教授のこの論文(2部あって後半の方) 邦訳があり邦訳で読んだ。 プログラミングのモナド発見の経緯 プログラミングのモナドはなんか包んだり抜き出したり見たいな感じの概念で知られてますが、プログラミングの概念をモジュール化する機構云々の開発の前段階がある。そもそもリストだかIOだか例外処理だかの概念をそれぞれ一つのモジュールに

        【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 - Qiita
      • Levelsモナドを使った幅優先探索の仕組み

        Haskellは関数型プログラミング言語と呼ばれますが、関数だけでなく型も重要な役割を担っています。アルゴリズムを考える時、手続きの最適化だけでなく、正しいデータ型を選択することがシンプルなアルゴリズムを導き、実装をコンパクトにできるというのはよくある話です。今回は非常に単純な型でありながら幅優先探索というアルゴリズムのエッセンスを詰め込んだ Levelsというデータ型 について紹介したいと思います。 ピタゴラス数を列挙する ピタゴラス数とはピタゴラスの定理における関係式 a^2 + b^2 = c^2 を満たす自然数の三つ組です。 Haskellのリストは遅延評価なので 全ての自然数の三つ組を列挙する 列挙した自然数の中から関係式を満たすものだけ抽出する という手順でピタゴラス数を列挙することを考えてみましょう。 実際この方法は有限な探索範囲ではうまく機能します。 pyth :: [(I

          Levelsモナドを使った幅優先探索の仕組み
        • Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself

          この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Generic Associated Types を用いたエミュレーション(new!) 型クラスを定義する Functor を用意する Pointed を用意する Applicative を用意する Monad を用意する いくつか型を実装していく 現状実装できないもの do 記法 Generic Associated Types(GATs)とは何か 追記(2022-11-06) リポジトリ 参考文献 モナドに関する話題が言語実装アドベントカレンダーの範疇に入るのかわかっていませんが*1、プログラミング言語がお好きな方

            Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself
          • Type level mapを使ったpreload風関連リソースの取り回し。Indexed monad添え

            この記事はHaskell Advent Calendar 202011日目の記事です(遅延)。 大晦日です。いかがお過ごしでしょうか。 Haskellでapi server等を作った際、rdbへの問い合わせでPreload的なことを行う箇所で、Type level mapを使った所、なかなかの使い勝手だったので、共有します。 さらにIndexed Monadを使い、明らかに残念だった箇所を改善します。 preload? 1+N問題を起こさぬよう、事前に関連リソースを問い合わせておくもの。prefetchとかとも。 posts = Post.find(...) # query Post # view for p in posts for t in p.tags # ここで問い合わせるとN回なので、事前に問い合わせていて欲しい render t やること viewが要求するpreloadを定義

              Type level mapを使ったpreload風関連リソースの取り回し。Indexed monad添え
            • Monoids in the Category of... | Blog | jackkelly.name

              The unfortunate meme phrase “a monad is just a monoid in the category of endofunctors, what’s the problem?” comes from two sources: The fact and most of the phrasing comes from Mac Lane’s Categories for the Working Mathematician, but “What’s the problem?” is a cheeky addition from a funny 2009 blog post: A Brief, Incomplete, and Mostly Wrong History of Programming Languages The meme words have bec

              • Monads and GATs in nightly Rust

                This blog post was entirely inspired by reading the GATs on Nightly! Reddit post by /u/C5H5N5O. I just decided to take things a little bit too far, and thought a blog post on it would be fun. I want to be clear from the start: I'm introducing some advanced concepts in this post that rely on unstable features in Rust. I'm not advocating their usage at all. I'm just exploring what may and may not be

                  Monads and GATs in nightly Rust
                • Haskell: A Great Procedural Language

                  There are many catchphrases about Haskell. Haskell is useless. Haskell aims to avoid success at all costs. Haskell is the best procedural language in the world. These sound like dismissals or absurdities from the outside, but once you learn what they really mean, they take on a new light. In this article, I want to explain the third. (See the appendix if you are curious about the first two.) This

                  • Functors and Monads For People Who Have Read Too Many "Tutorials" - iRi

                    Celebrating Over 10 Years Of Being Too Lazy To Pick A Tagline Title is literally true. This may not be the best place to learn about these concepts for the first time, because I'm going to focus on knocking down the misconceptions about them. Then again, it may not be the worst place, for the same reason. I had promised myself I would not add to the pile of functor or monad "tutorials", but I've b

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

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

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

                        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

                          Optics and Kleisli arrows
                        • Writer Monadで気軽にMonad則を破る - Haskell-jp

                          Tweet 🎅この記事は、Haskell Advent Calendar 2020 25日目の記事です。 🎄Happy Christmas!!🎄 今回は先日(といっても元の質問の投稿からもう何ヶ月も経ってしまいましたが…)StackOverflowに上がったこちら👇の質問に対する回答の、続きっぽい話を書こうと思います。長いし、質問の回答からスコープが大きく外れてしまうので記事にしました。 haskell - モナド則を崩してしまう例が知りたい - スタック・オーバーフロー MonadとMonoidにある重要な繋がりを説明した後、それを応用したWriter MonadがどうMonoidを使ってMonad則を満たしているのか証明します。そして、Writerのそうした性質を用いて簡単にMonad則を破る例を紹介することで、読者のみなさんがMonad則のみならずdo記法やMonadそのもの

                            Writer Monadで気軽にMonad則を破る - Haskell-jp
                          • Introduction to Free Monads

                            If you’ve been around Haskell circles for a bit, you’ve probably seen the term “free monads”. This article introduces free monads and explain why they are useful in Haskell development. To whet your appetite a little, free monads are basically a way to easily get a generic pure Monad instance for any Functor. This can be rather useful in many cases when you’re dealing with tree-like structures, bu

                              Introduction to Free Monads
                            • はじめての Monad, Monad Transformer, Extensible Effects | Recruit Tech Blog

                              はじめての Monad, Monad Transformer, Extensible Effects Ariizumi Shumpei こんにちは。RECRUIT Job for Student 2021 Summer で、スタディサプリ ENGLISH の開発を行なっていた有泉洵平です。 スタディサプリ ENGLISH のサーバサイドでは Extensible Effects を導入しています。それを扱うにあたり Monad, Monad Transformer, Extensible Effects を学んだため、この記事にまとめます。 また、RECRUIT Job for Student 2021 Summer に興味のある方は、そちらについても記事を書いたため、参考にしてください。 要約 Monad とは、pure と flatMap というメソッドを持ち、Monad 則を満たすも

                                はじめての Monad, Monad Transformer, Extensible Effects | Recruit Tech Blog
                              • Extensible Effects with Scala/eff-with-scala

                                Extensible Effectsの概要とScalaでの実装の説明です

                                  Extensible Effects with Scala/eff-with-scala
                                • Scalaプログラマが圏論を学ぶためのオススメ文献 - 3選

                                  圏論は数学の一分野です。これを学ぶのには「数学書」を手に取るのが王道なのですが、残念ながらこれは大部分のプログラマに理解できる言葉では書かれていません。「定義・命題・証明」の積み重ねで書かれています^1。ここで大半のScalaプログラマは苦い顔をすると思います。もう少し分かりやすいScalaプログラマ向けの圏論入門がないかと探してみると「Haskell」向けの記事が大量に引っかかるでしょう。ここで多くのScalaプログラマは心を折られてしまいます。「圏論」はまだScalaプログラマには早すぎたんだと・・・ 本記事ではそんなあなたに贈る3つの文献をご紹介したいと思います。 はじめに本記事は圏論に興味があるScalaプログラマを対象にしています。特にプログラマにとって実用的な圏論の知識をScalaを通して身につけたい方にオススメします。 プログラマが圏論を学ぶべき理由プログラマが圏論を学ぶべき

                                    Scalaプログラマが圏論を学ぶためのオススメ文献 - 3選
                                  • lucian's Blog

                                    20 Martie 2024 FastAPI Mental Model - a high-level one 18 Octombrie 2022 Flow Python - inspired by Haskell 06 Aprilie 2022 A User Guide for Haskell Monads - theory not required 08 Aprilie 2020 Make Errors Cheap - to make experiments easier 04 Iunie 2019 Learning Principles and Tools - based on the psychology of learning 16 Aprilie 2019 The Complexity of Coffee - why I love it 15 Aprilie 2019 My Id

                                    • Probability Monads from scratch in 100 lines of Haskell

                                      The final code is on Github. I recently spent some time trying to learn Haskell, when I stumbled across the concept of probabilistic functional programming, originally based on this PFP library. Due to Haskell’s syntax sugar for monad computations, expressing probability distributions as monads allows you to implement something like a mini probabilistic programming language in less than 100 lines

                                      • Koff.io - Practical Scalaz: Make async operations with scalaz.Either and Futures

                                        Many of us know about such library as scalaz. For those who don’t know it is a library for functional programming in scala. You can find it here. Then I was trying to learn and understand this lib it was quite difficult to realize how exactly it can be used in a real code in a real system. I looked thought lots of articles about it, but there were only abstract examples. So I`ve decided to write a

                                        • All About Monads

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

                                          • 関数型プログラミング入門〜モナド変換子について①〜 - Qiita

                                            Haskellなどの関数型プログラミングを学習していて、モナドのことが少しわかってきたかな、、と思っていたら次は「モナド変換子」という壁にぶち当たります。 オブジェクト指向に慣れ親しんだ我々平凡なプログラマに立ちはだかる第二の壁です。 Haskellでプログラムを書く場合、こいつを使わないとまともなプログラムを書くのが難しい。とってもじゃじゃ馬なやつですが、使えるととても便利なやつでもあります。 今回は「モナド変換子」の一側面を眺めて、モナド変換子の有難みを実感してみます。 モナド変換子導入のモチベーション あまり厳密な言い方ではないかもしれませんが、実用上は「複数のモナドの効果をもつ計算を同時に行いたいから」と言って良いかと思います。 Monad型クラスの(>>=)の型注釈は以下のように定義されていました。 上記の型変数mはモナドですが、このmは全て同じモナドでなければなりません。 上記

                                              関数型プログラミング入門〜モナド変換子について①〜 - Qiita
                                            • モナドについて: モノイド・モノイド圏・モノイド対象・モナド - 疑念は探究の動機であり、探究の唯一の目的は信念の確定である。

                                              概要 モノイド圏やモノイド対象、そしてそれらの具体例であるモノイドとモナドについてまとめる。モノイド対象はモノイド圏において定義される。集合の圏 はモノイド圏であり、そのモノイド対象はモノイドである。つまりモノイド対象はモノイドの一般化である。自己関手の圏 もモノイド圏であり、そのモノイド対象がモナドである。 はじめに: モナドについて 今回の記事について STEP 1:  圏論におけるモナドの定義 STEP 2: モノイド対象とモノイドとモナドの関係性 Example 1: 集合の圏 Example 2: 自己関手の圏 STEP 3: 圏論において定義されているモナドと実際にHaskellなどで定義されているモナドの関係性 まとめ 参考文献 はじめに: モナドについて 最近、PythonやHaskellなどの関数型プログラムを勉強している友達にこう聞かれた。 これって意味わかる? 「モナ

                                              • 余代数とプログラミング@GPTといっしょ - Qiita

                                                余代数がプログラミングで便利らしい : 余代数ってプログラミングに有効らしいね : はい、有効です。 余代数(coalgebra)は、データを「構築する」アルgebra(algebra)とは逆に、 データを「展開・観察する」仕組みを理論的に捉えるもので、 特にストリーム処理や状態遷移モデルの実装に強力な枠組みを提供します。 : アルgebra😂 代数のことやね 余代数がプログラミングで有用な理由 無限データ構造の定義 代数(例えばfoldやcatamorphism)は有限のツリーやリストを畳み込みます 一方、余代数はunfoldやanamorphismと呼ばれる操作で無限ストリームや遅延リストを生成できます。 Haskell の unfoldr や Scala の Iterator.unfold はまさに余代数的パターンです。 状態マシンやオートマトンのモデル化 余代数は「現在の状態から

                                                  余代数とプログラミング@GPTといっしょ - Qiita
                                                • モナド整理 - Qiita

                                                  Deleted articles cannot be recovered. Draft of this article would be also deleted. Are you sure you want to delete this article?

                                                    モナド整理 - Qiita
                                                  • IO モナド、Maybe モナド、List モナド、State モナドのまとめ | tnomuraのブログ

                                                    IOモナド、Maybeモナド、Listモナド、Stateモナドを比較してみて、モナドの便利さがようやくわかってきたような気がする。モナドの便利さについて述べる前にまずモナドとは何かについて考えてみる。 モナドとは何かというと、プログラミングの方法のみに焦点を当てると、return x で>>= から、「1引数、戻値モナド型」の関数に入力して、その出力をまた >>= で次のモナド型関数に入力するということを延々と繰り返す操作だということだ。モナドの本質とはたったこれだけのことだ。 上の4つのモナドは例外なく、この原則に従っている。ということは、そのなかのひとつ例えばIOモナドを熟知していれば、そのアナロジーで他のモナドも同じような操作でコントロールできるということだ。 すなわち、高レベルのモジュール化されたプログラムを、同じ方法で操作できる。自前のモナドが、モナド則を満たしていれば、IOモナ

                                                      IO モナド、Maybe モナド、List モナド、State モナドのまとめ | tnomuraのブログ
                                                    1