タグ

Haskellに関するtsuwatchのブックマーク (14)

  • Haskell/圏論 - Wikibooks

    この項目では Haskell に関連する内容に限って圏論の概観を与えることを試みる。そのために、数学的な定義に併せて Haskell コードも示す。絶対的な厳密さは求めない。そのかわり、圏論の概念とはどんなものか、どのように Haskell に関連するかの直感的な理解を読者に与えることを追求する。 圏の導入[編集] 3つの対象A, B, C、3つの恒等射, , と、さらに別の射, からなる単純な圏。3つめの要素(どのように射を合成するかの定義)は示していない。 質的に、圏とは単純な集まりである。これは次の3つの要素からなる。 対象(Object)の集まり。 ふたつの対象(source objectとtarget object)をひとつに結びつける射の集まり。(これらはarrowと呼ばれることもあるが、Haskellではこれは別の意味を持つ用語なので、ここではこの用語を避けることにする。)

  • モナドへの近道・Haskell からの寄道

    モナドへの近道・Haskell からの寄道 中村翔吾∗ 2007 年 1 月 26 日 稿の趣旨 圏論のモナドとプログラミング言語 (Haskell) の間にはどの様な関係があるのか.この問いに答えるた めには,当然だが,少なくともモナドが理解できる程度に圏論を知らなければならない.稿は,圏論の知 識が全くないところから,モナドを理解するまでの,最短コースの道のりをたどり (第 1,2 章),これを前 提にして Haskell と圏論との関係を考察する (第 3 章).読者には圏論の知識を要求しないが,Haskell の 文法の基的な理解は前提としている.また,圏論に関しては,あくまでも「モナドへの最短コース」なの で,米田の補題,普遍性,コンマ圏,極限などの重要な概念は解説していない. 1 基礎知識の準備 定義 1 (メタグラフ metagraph) メタグラフは射 (arrow

  • モナド則がちょっと分かった? - Qiita

    モナドを勉強しようとするとモナド則が立ちはだかります。しかしモナド則は意味だけでなく、それがモナドを勉強する上でどういう位置付けなのかも分かりにくいです。とりあえず棚上げしたまま分かる範囲のことから手を付けていましたが、ちょっと分かったような気がしたのでメモしておきます。 モナド則に関する現時点の理解ですが、正確さは保証できません。 これを読めばモナドが理解できるという類の説明(モナドチュートリアル)ではありません。 試験的にモナド則を図示しました。コードを図に転写して、多少の解釈を加えたものです。もし分かりにくければ無視しても構いません。 この記事はHaskell 超入門シリーズの番外編です。 モナド則は return と >>= の動きに関するルールです。 return x >>= f == f x m >>= return == m (m >>= f) >>= g == m >>=

    モナド則がちょっと分かった? - Qiita
  • 単なる自己関手の圏における... (1) 圏とは | tnomuraのブログ

    Haskell のIOモナドの分かりにくさに対する批判に対し、フィリップ・ワドラーが、「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」と答えたそうだ。これで、すんなり納得するのはよほど圏論に詳しい人だろう。 管理人としては、圏論抜きで Haskell というプログラム言語を使えればそれが一番ありがたいのだ。しかし、最低でもモナドや圏論やモノイド対象が何を指しているのかくらいは知っておきたい。そこで、『モナドへの近道・Haskell からの寄り道』(中村翔吾著)というレポートを道案内にして、少なくともモナドというのが何を指しているのかを探索してみた。 まず、圏論の「圏」という言葉が何を指しているかだ。端的に言うと圏とは、対象と射からなる構造だ。集合と写像なら少しは馴染みがあるので、集合に例えると、対象とは集合のことで、射とは写像のことだ。集合 a と集合 b があり、そ

    単なる自己関手の圏における... (1) 圏とは | tnomuraのブログ
  • Functor(関手)ってなんですか? - Nao Minami's Blog

    どうもこんばんは、south37です。今日も引き続きHaskellネタでいこうと思います。Functorって概念を知ったので、ちょろっとまとめてみたいと思います。 そもそも、Functorってなんですか? さて、Functorって聞いて、ピンと来ますか? 僕は、全然ピンと来ませんでした。Wikipedia先生の定義を見ても、 関手(かんしゅ、functor)とは、圏の間の対応付けのことである。関手は対象関数と射関数の組からなる。 などと、何だかよくわからない感じで書かれています。 じゃあ一体なんなんだって話ですが、ポイントはどうやら「対応付け」って点のようです。「圏(と呼ばれるよく分からないモノ)」から「圏」への対応付けをしてくれるのが、Functorです。そうすると、今度は「圏」がなんなんだって話になる訳ですが、これもWikipedia先生によれば 数学における圏(けん、category

    Functor(関手)ってなんですか? - Nao Minami's Blog
    tsuwatch
    tsuwatch 2015/02/08
    わかりやすい
  • Monadを巡る困難についてのぼやき - Qiita

    予は如何にしてMonadophobiaを克服しつつあるか Monadについて実は数日前にようやく理解しはじめた。思えば10年前に最初にそれが函手(functor)だって教えてくれれば、少なくとも簡単なイメージ形成と基礎的な使い方はすぐに理解できたのに、と思う。HaskellのMonadを理解するために圏論を理解する必要はありません、ってのは当かもしれないが、函手だって言われれば直観的にはすぐに理解できる。要は fmap はHaskellの函数全体が作る圏からその部分圏への函手です、fmapで函数の構造を保存したまま部分圏の函数が得られますよ、というか函手の条件を満たすようなfmapを提供することによってそういう構造保存的な部分圏を提供するんですよ、というだけのことである。ところが、部分圏の射自体がHaskellの圏の射だから、当の函手が自分自身に適用されてm (m a)のようにMonad

    Monadを巡る困難についてのぼやき - Qiita
  • 箱で考えるFunctor、ApplicativeそしてMonad

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

    箱で考えるFunctor、ApplicativeそしてMonad
  • プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b

    「Haskellと数学とちょびっと音楽」なんていうシャレオツなサブタイをブログに付けてるのは誰ですか? 俺だよー! 大体、Haskell関連のコミュニティに顔を出していると、 数学科出ましたーとか、物理専攻ですー、とか、そーいう人がわりと多いのですが、 僕は「勉強なんて出来ないんジャー・レッド」だったので、サブタイトルに「数学」なんて入れつつも、 数学の話はほとんど出来なかったりとか出来たりとか・・・結局Haskellの記事しか書いてないですね、はい。 ただ、どちらかというと、Haskellでも処理系どうのとか、パフォーマンス云々とか、 そういう話より型システムでどうやって抽象化するかーみたいな、そういう話のほうがおもしれーとか思ったりしたので、 気づいたら圏論なんかはガジガジしてまして、多少の自己流の知識があったりとかなかったりとかしてるのです。 純粋関数型やらHaskellやらがメジャ

    プログラマであるあなたが圏論を学んで得られる事、得られない事 - Creatable a => a -> IO b
  • Clean 一意型 調査メモ - Qiita

    Cleanという言語で副作用を扱うのに使われている一意型について、簡単に調べてみました。モナドが使われるようになった背景を理解する一助になるかもしれません。 ※ この記事はHaskellの知識を前提としています。Haskellから推測できる事項については説明を省略しています。 この記事には続編のようなものがあります。 IOモナドを素手で触ってみた 2014.12.9 CleanはHaskellとよく似た非正格純粋関数型言語です。 http://wiki.clean.cs.ru.nl/Clean CleanとHaskellは方言程度の違いです。次の記事に比較がまとめられています。 [PDF] Clean for Haskell98 Programmers - A Quick Reference Guide 2007 なぜ似たような言語が2つあるかというと、副作用の扱い方に違いがあるためです。

    Clean 一意型 調査メモ - Qiita
    tsuwatch
    tsuwatch 2014/12/20
    フムゥ…
  • Rubyに型を付けるHaskellというgemを作ったヨ!

    2020/12/27追記 https://www.ruby-lang.org/ja/news/2020/12/25/ruby-3-0-0-released/ => Ruby3.0.0にRBSとTypeProfと用いた静的解析に対するソリューションが提供されました。 今後はこちらのエコシステムをガンガン盛り上げていきましょう💪 あいさつ P.S. 12/11 HaskellからRubypeにgemを変更しました こんにちは. 寒さが一段と厳しくなってきた事もありまして心を温めるGemを作りました. Rubyの振る舞いを汚染する事無く型保証の恩恵をゆるふわ受けられるgemです (型をつけるとか型保証という言葉をこの文脈ではメソッドの引数返り値のクラスを実行時にチェックするという意味で使っている.) 得体の知れないGemで抵抗感があるかもしれませんが、コード自体は50行以下の薄いGemなので気

    Rubyに型を付けるHaskellというgemを作ったヨ!
  • Haskell 超入門 - Qiita

    Haskellで簡単なプログラムを書くのに最低限必要な基礎文法を取り上げます。練習では再帰に慣れることに重点を置きます。再帰によるリスト処理の例として各種ソート(挿入ソート、バブルソート、マージソート、クイックソート)を紹介します。ラムダやモナドなどの発展的な内容には触れませんのでご了承ください。 シリーズの記事です。 Haskell 超入門 ← この記事 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 Haskell 構文解析 超入門 【予定】Haskell 継続

    Haskell 超入門 - Qiita
  • 関数型言語を学ぶことは実務でどう役に立ったか - Rejasupoem

    関数型LT大会で「実社会の問題を解決する関数型言語」というタイトルで発表しました。 というのも、会社で「すごいHaskellたのしく学ぼう!」の輪読会をしていて、最初こそ10人以上の人が参加していたのだけど、章が進むごとにどんどん人が離脱していって、主催者としてはなんとか完走したいという思いがあったので、調べたのですが、 ヒアリングから、この二つの線がクロスしたときに、人は離脱するという知見が得られました。 ということで、Haskellに対して実用性を見出したいと思いながら半年を過ごしたのですが、実用的 = 仕事で使うということであれば、今の現場でHaskellに移行するのは現実的ではありません。 でも、Haskellには関数型言語のエッセンスが詰まっていて学びが多かったと思っていて、直接的には使っていないけど、概念として役立つことがあると思ったので、それを伝えるために今回文章に起こしまし

  • Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD

    この記事を書き上げるには、相当長い時間がかかりました。来は今年の年明け、 Rubyの死 やデイヴィッド・ハイネマイヤー・ハンソンの TDDは死んだ がアップされて騒ぎになる前に投稿するつもりだったのです。昨年末に書いたツイートを見てください。 > Rubyにはもう飽き飽きした。理由はいろいろあるが、特にその副作用と、ステータスが可変なせいで大量のユニットテストを書かされるのにはウンザリだ。 @abevoelker Rubyの開発に関しては、大勢の人が心のどこかで何かおかしい、何かが欠けていると思っているようですが、たいていの人は責める対象を間違っています。Rubyで書いたアプリがとんでもない代物になったって? それはあなたがきちんとテストコードを書かなかったか、テスト駆動開発(TDD)の指針に則って開発しなかったからです。もしくは、正しいデザインパターンに切り分けるための知識が不足してい

    Rubyにはウンザリ!動的型付け、副作用、およびオブジェクト指向プログラミング全般からの考察 | POSTD
  • The Haskell 98 Language Report

    Simon Peyton Jones [editor], Microsoft Research, Cambridge Lennart Augustsson, Sandburst Corporation Dave Barton, Intermetrics Brian Boutel, Victoria University of Wellington Warren Burton, Simon Fraser University Joseph Fasel, Los Alamos National Laboratory Kevin Hammond, University of St. Andrews Ralf Hinze, University of Bonn Paul Hudak, Yale University John Hughes, Chalmers University of Techn

  • 1