タグ

あとで読むとHaskellに関するhamamuratakuoのブックマーク (71)

  • Haskellを勉強するのに便利なリンク集

    Haskell2010 Language Report語訳 (定番の公式ドキュメントです。) オブジェクト指向言語ーそれは何兆ドル規模の厄災 (オブジェクト指向言語の問題点を学び、「なぜ関数型言語は必要なのか?」という問いに答えてくれます。) 関数型プログラミングが『銀の弾丸』である という非常識な常識 2022 (関数型言語の特徴が丁寧に書かれています。) あどけない話 (山和彦さんのブログです。入門資料がとてもわかりやすく書かれています。) 箱で考えるFunctor、ApplicativeそしてMonad (イラスト付きでモナドをわかりやすく解説しています。) モナドはポケモン数学が出てこないモナド入門 (ポケモンの例えを使ってモナドをわかりやすく解説しています。) 他にもおすすめのサイトなどありましたら、ぜひ教えて下さい!

    Haskellを勉強するのに便利なリンク集
  • Functional programming is finally going mainstream

    Paul Louth had a great development team at Meddbase, the healthcare software company he founded in 2005. But as the company grew, so did their bug count. That’s expected, up to a point. More code and more features mean more defects. But the defect rate was growing faster than Louth expected. “We were seeing more and more of the same types of bugs,” Louth says. “It was clear that there was an issue

    Functional programming is finally going mainstream
    hamamuratakuo
    hamamuratakuo 2022/07/18
    Functional programming is finally going mainstream | Hacker News https://news.ycombinator.com/item?id=32071346
  • Haskellでの型レベルプログラミング

    Haskellでの型レベルプログラミングの解説書です。

    Haskellでの型レベルプログラミング
    hamamuratakuo
    hamamuratakuo 2022/03/31
    「Haskellでの型レベルプログラミング」 | 雑記帳 https://blog.miz-ar.info/2022/03/writing-type-level-programming-in-haskell/
  • 執筆中:「Haskellでの型レベルプログラミング」 | 雑記帳

    最近、「Haskellでの型レベルプログラミング」という「」を執筆している。まだ完成ではないが、以下のリンクから読める: Haskellでの型レベルプログラミング なぜHaskellか 最近いろんな言語が出てきている中で、Haskellの強みとは何だろうか。人によって答えは色々あるだろうが、筆者にとってHaskellの魅力的な側面は強力な型システムである。どのくらい強力かというと、型レベルでプログラミングができ、依存型の模倣さえもできてしまう。 (依存型をやりたいなら最初から依存型のある言語を使えという意見は尤もだが、それはそれとして。) Haskellでの型レベルプログラミングの解説記事というのは、英語圏ではちらほら見かけるが、日語圏ではあまり見ない。2018年(原文は2017年)に公開された Haskellにおける型レベルプログラミングの基(翻訳) – Qiita が数少ない例で

    hamamuratakuo
    hamamuratakuo 2022/03/31
    通常のプログラミングで型を意識しなければならないように、型レベルプログラミングではカインドの意識が必要になる。
  • 型の理論 入門

    概要プレスルーム著作権お問い合わせクリエイター向け広告掲載開発者向け利用規約プライバシーポリシーとセキュリティYouTube の仕組み新機能を試してみる© 2024 Google LLC

    型の理論 入門
  • 型の理論入門 ( 論理学入門 III ) | MaruLabo

    型の理論入門 概要 「型の理論」には、Russellの 'Ramified Type Theory' から Voevodsky の 'Homotopy Type Theory' までを数えれば、100年以上の歴史があります。 「型の理論」の歴史には、ひとつ大きな特徴があります。 ラッセルの理論が、自ら発見した「集合論の逆理」がもたらした数学の基礎の「危機」を解消しようとする試みとして生まれたことが示すように、「型の理論」は数学をどのように基礎づけるかという問題と結びついて発展してきました。 Churchのラムダ計算もTuringTuring machineの構成も、ゲーデルの不完全性定理がもたらした数学の基礎についての「危機」に対する反省・探究の中で生まれたものです。数学の基礎への関心は、集合論、Topos理論にかわる数学の新しい基礎づけを目指したVeovodskyの"Univalent

    型の理論入門 ( 論理学入門 III ) | MaruLabo
  • tnomuraのブログ

    公理的集合論の説明では、必ず順序集を集合で表現する方法が出てくるが、(Wikipedia の「ツェルメロ=フレンケル集合論」の記事) 最初のフォン・ノイマン順序数 0 = {} =∅ 1 = {0} = {∅} 2 = {0, 1} = {∅, {∅}} 3 = {0, 1, 2} = {∅, {∅}, {∅, {∅}}} 4 = {0, 1, 2, 3} = {∅, {∅}, {∅, {∅}}, {∅, {∅}, {∅, {∅}}}} なんか、きつねに抓まれたような気になる。公理的集合論ではものの集まりという直感的な集合は定義できないのではないかという気がしてくるのだ。 ところで、公理的集合論では、変数は一階述語論理の個体変項だが、意味論的には変数の全ては集合として扱うようである。したがって、任意の2つの要素 x, y からなる集合を定める対の公理は次のようになる。

    tnomuraのブログ
  • I love CUI

    はじめに Linux (Vine Linux) を使って、CUI の便利さに気がつきました。文字情報を扱うときの CUI のきびきびした反応は魅力的です。しかし、Linux の膨大なツールの数や EMACS などのコマンドの数を見ると、何をどの程度習得すれば良いのか戸惑います。このホームページでは、Linux を知的生産の道具として活用するためには、最低限どのツールをどの程度使いこなせば良いかを考えました。また、併せて、lynx, w3m, emacs, namazu などを組み合わせて作る便利な短いスクリプトを紹介します。 このホームページに掲載したスクリプトは、利用、改造、再配布自由です。著作権は著者が保有しますが、利用、再配布等に際し著作権を明記する必要はありません。また、これらのスクリプトは無保証です。これらのスクリプトによって発生したいかなる障害にも著者は責任を負いません。 知的

    hamamuratakuo
    hamamuratakuo 2021/10/30
    作者紹介 生年 昭和29年(1954年) 性別 男 職業 内科医 趣味 特にありません。面白いことなら何でも。昼寝。とにかくよく寝ます。
  • モナドの使い方 - Haskell 入門

    モナドの使い方 Maybe モナド Haskell では Maybe 型をよく使う。Maybe 型の data 宣言は次のようになる。 Prelude> :info Maybe data Maybe a = Nothing | Just a -- Defined in `Data.Maybe' Maybe 型のデータコンストラクタは Nothing と Just a だ。検索が失敗したときは Nothing を返し、検索が成功したときはその値を Just "foo" のようにして返すというような使い方をする。Prelude には標準の関数でペアのリストからキーの値が fst 要素に一致するペアの snd 要素の値を求める lookup という関数がある。この lookup の戻値が Maybe 型だ。 Prelude> lookup 3 [(1,'a'),(2,'b'),(3,'c')]

    hamamuratakuo
    hamamuratakuo 2021/10/30
    (1)モナド値 (2)モナド型関数(Kleisli射) 戻値がモナド値の関数 (3)return関数 モナド値にラッピングして返す関数 (4)>>= 演算子(bind演算子) 左項のモナド値からコンテナの値を取り、右項のモナド型関数へ引数として渡す関数
  • GitHub - tokiwoousaka/YuruhuwaHaskell: ゆるふわHaskell入門会

    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

    GitHub - tokiwoousaka/YuruhuwaHaskell: ゆるふわHaskell入門会
    hamamuratakuo
    hamamuratakuo 2021/10/12
    Haskell入門 関数型プログラミング言語の基礎と実践 https://b.hatena.ne.jp/entry/s/gihyo.jp/book/2017/978-4-7741-9237-6
  • 命令型言語Haskell - Pixel Pedals of Tomakomai

    ※これはHaskell Advent Calendar 2012の12/12分の記事です。 こんにちわ、Perlのプログラマの@hirataraです。関数型言語はまともに使ったことがないので、命令型言語の話を書きます。 Haskellでのふつうの"関数" Haskellは純粋関数型言語なので、例えば、add1 :: Int -> Intのような型の関数で副作用を発生することはできません。ここでいう副作用とは、ログを出力したりネットワークにアクセスしたりといったoutputだけではなく、ファイルを読み込んだり環境変数を参照するといったinputも含みます。add1は数学の関数と同じように振る舞います。もっときつい言い方をすれば、add1は単なる辞書(Dictionary or Map or HashTable, etc.)のように、キーに対して決まった値を返すような働きしかしません。(ただし

    命令型言語Haskell - Pixel Pedals of Tomakomai
  • Algebras for Weighted Search (ICFP 2021 - Research Papers) - ICFP 2021

  • Haskell入門

    Skip to the content. Haskell入門 従来の言語では問題を部分化する方法について概念的な限界がいくつかある。関数型言語はこれらの限界を押し広げるも のである。 なぜ関数プログラミングは重要か 関数プログラミングを習得するには,これまで命令プログラミングで培った技術はいったん忘れ,真っ白な気持ちで臨む必要があります。関数型の山を登るためには,命令型の山を降りなければなりません。 第1章 関数プログラミングは難しくない! Haskellは理解すれば理解するほどきれいに書けることを約束してくれます。信頼してください 常にパターンを探しましょう。単純になるとき、またその時だけそれらを抽象化するのです 辛抱強く抽象化を正しく理解しましょう。もしそれが出来たならすべてのことが魔法のようにつじつまが合うようになるでしょう。 実装そのものが設計図となります … Haskell Ma

    hamamuratakuo
    hamamuratakuo 2021/08/15
    皆さんHaskellを書くときのエディター(IDE)は何がお勧めですか?Emacs派 vs Visual Studio Code派だとどっちが多いのかな?🤔 / Haskell界の新星 → すごいHaskell、ハスケル子と学ぼう! - Qiita https://qiita.com/Yametaro/items/d12ec13de82d221702de
  • HMock

  • プログラング言語Idrisに入門させたい(v0.9)

    これは筆者(κeen)がIdris Advent Calendar 2020に投稿した内容を土台とし、一冊のになるように増補改訂を行なったものです。 書では依存型のあるHaskellことIdrisについて紹介します。Idrisは純粋関数型言語であり構文もHaskellに似ていますが、大きな特徴として依存型があることが挙げられます。依存型があるとリストの長さを指定したり整数同士の割り算でゼロ除算が起きないことを保証したり、究極的には数学の証明をしたりもできます。また、依存型以外にもインタラクティブな開発環境を使った型駆動開発であったりElaborator Reflactionによるメタプログラミングだったりと注目に値する言語機能も揃っています。 総じてIdrisは非常に尖った言語です。作者がプログラミング言語理論の研究者ということもあり、かなり攻めた言語機能が入っています。依存型を搭載し

    プログラング言語Idrisに入門させたい(v0.9)
    hamamuratakuo
    hamamuratakuo 2021/06/09
    Idrisとは型駆動開発のために設計されたプログラミング言語です。大きな特徴としては型駆動開発のために強力な型、特にプログラミング言語としては珍しい依存型を持つこと、文法がHaskellに似ていることが挙げられます。
  • Haskell - 計算機科学のブログ

    入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 40(Aesonを使ったJSONデータの処理)、40.6(練習問題)Q40-1の解答を求めてみる。 入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 40(Aesonを使ったJSONデータの処理)、40.3(データ型をFromJSONとToJSONのインスタンスにする)、FromJSONとToJSONのインスタンスを独自に記述する、クイックチェック 40-4の解答を求めてみる。 入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 40(Aes

  • Functors, Applicatives, And Monads In Pictures - adit.io

    Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors

    hamamuratakuo
    hamamuratakuo 2021/02/24
    What is the difference between the three? functors: you apply a function to a wrapped value using fmap or <$> applicatives: you apply a wrapped function to a wrapped value using <*> or liftA monads: you apply a function that returns a wrapped value, to a wrapped value using >>= or liftM
  • Haskell 例外処理 超入門 - Qiita

    Haskellでは失敗を処理するのにモナドと例外の2つの方法があります。手っ取り早く失敗を処理することを目的として、それらの初歩を説明します。 シリーズの記事です。 Haskell 超入門 Haskell 代数的データ型 超入門 Haskell アクション 超入門 Haskell ラムダ 超入門 Haskell アクションとラムダ 超入門 Haskell IOモナド 超入門 Haskell リストモナド 超入門 Haskell Maybeモナド 超入門 Haskell 状態系モナド 超入門 Haskell モナド変換子 超入門 Haskell 例外処理 超入門 ← この記事 Haskell 構文解析 超入門 【予定】Haskell 継続モナド 超入門 【予定】Haskell 型クラス 超入門 【予定】Haskell モナドとゆかいな仲間たち 【予定】Haskell Freeモナド 超入門

    Haskell 例外処理 超入門 - Qiita
    hamamuratakuo
    hamamuratakuo 2021/01/02
    成功時だけでなく、失敗時にも値が返せるモナドです。Maybeモナドの機能強化版のような失敗系モナドです。Rightが成功を表すのは、「正しい」という意味があるのに掛けているようです。
  • とほほのHaskell入門 - とほほのWWW入門

    「ハスケル」と呼びます。 数学者・論理学者の Haskell Curry の名前に由来しています。 LISP, ML などの言語の影響を受けています。 関数型プログラミング言語 であり、特に 純粋関数型言語 に分類されます。 金融、セキュリティ数学・科学解析、構文解析などの分野での利用例があります。 関数型プログラミングに慣れていない人にとっては、多少学習コストが高いようです。 遅延評価 を採用しており、式は記述されていても必要となるまで評価されません。 関数型言語ですが、モナド などを利用することにより、手続き型言語のような記述も可能です。 Haskell 1.0 (1990年)、Haskell 98 (1999年)、Haskell 2010 (2009年) などのバージョンがあります。 コンパイル型言語ですが、スクリプト言語の様にインタプリタで呼び出すこともできます。 処理系は、イン

    hamamuratakuo
    hamamuratakuo 2021/01/02
    "初版:2020年12月27日" → 2021年はHaskell入門の年!?みんなでHaskellを攻略しよう! Haskellに慣れるポイント → (1)do文の使い方、(2)IOモナドの仕組み(入出力=副作用の管理)、(3)例外処理。とりあえず圏論が分からなくてもOK
  • 複雑なアニメーションをプログラムする 〜Reanimate入門〜

    Reanimateはアニメーションを作成するためのライブラリです。 ReanimateはHaskellのライブラリとして実装されているのでプログラムによってアニメーションを記述することができます。ライブラリに実装されている機能も多く、ドキュメントも豊富ですし、オンラインのPlaygroundまで用意されていてかなり完成度の高いライブラリになっています。さらにLaTeXや物理エンジン(Chipmonk 2D), POV-Ray, Blenderなど外部ツールとの連携もサポートされています。アニメーションの各フレームはSVGで書き出されるようになっており、幾何学的な図形やSVGフォントを使った文字などから構成されたアニメーションを作るのが得意です。作ったアニメーションは最終的にMP4, GIF, WebMに出力することができます(中間生成物である各フレームのSVGを取り出すことも可能です)。

    複雑なアニメーションをプログラムする 〜Reanimate入門〜
    hamamuratakuo
    hamamuratakuo 2021/01/02
    Blenderなど外部ツールとの連携もサポート Reanimate · GitHub https://github.com/reanimate