Haskell勉強会

関数型プログラミングの学習日記

ghcでHaskellのコンパイル

UbuntuでHaskellを学習。 haskell.hatenablog.com (p.3) 前回の続きです。 haskell.hatenablog.com main = do print "Hello, World!" インタープリターで一時的にHaskellコードを実行するのではなく、コンパイラーでコンパイルする方法をメモ。 端末を起動…

GHCiでHaskellスクリプトの実行

UbuntuでHaskellを学習。 haskell.hatenablog.com (p.3) とりあえず、ユーザーのホームディレクトリーに「haskell」というフォルダーを作る。 VSCodeで「hello.hs」という空ファイルを作る。 以下のコードを書く。 main = do print "Hello, World!" 端末を…

OCaml 再入門

新型コロナの感染拡大防止のため、外出の自粛が要請されていますが、こんな時は自宅で勉強するのが良いかもしれませんね。 せっかくなので、この機会にOCamlを復習してみたいと思います。 logmi.jp kuis-isle3sw.github.io try.ocamlpro.com yusukekokubo.gi…

ElmでHello, world!

Elm

「基礎からわかる Elm」という本を読んでいます。 haskell.hatenablog.com Elmで「Hello, world!」を表示させようと思ったら、さっそくエラーの壁にぶち当たったので、デバッグ時のメモを残しておきます。 004 Hello, world! モジュール名がない elm-format…

基礎からわかる Elm

Haskellと似たElmというAltJSがあります。 guide.elm-lang.jp Elm は JavaScript にコンパイルできる関数型プログラミング言語です。 ウェブサイトやウェブアプリケーションを作るツールという面では React のようなプロジェクトだと言えます。 Elmをちょっ…

Haskellの代数的データ型

Haskellの学習で直和型や直積型など、代数的データ型を理解すれば良いという話がありました。 haskell.hatenablog.com 本物のHaskellを書くには何が必要ですか? この言語の中核は非常に単純です。 作成方法と使用方法を理解している場合 純粋な関数と値 パ…

Haskellを習得するための4つのポイント

Haskellを習得するコツが提案されていました。 1.純粋な関数と値 2.パターンマッチング 3.直和型と直積型 4.副作用を作るためにIOをつなぐ方法 williamyaoh.com Haskellを習得するために、最初は難しいことを学ばなくても大丈夫、とのこと。 In part…

可換図式が描けるツール「Ipe」

LaTeXで圏論の可換図式を描くとき、TikZというツールがよく使われているようですが、他にも選択肢として「Ipe」というツールもあるそうです。 ja.wikipedia.org IpeはフリーのドローソフトでPDFおよびEPS形式の図形を作成できる。グラフィクス処理ライブラリ…

圏論の可換図式をLaTeXで描く方法

素朴な疑問として、本やネットの記事にある圏論の図はどうやって描いているのだろう?と思いました。 検索したら、LaTeXで可換図式を書くツールが提供されているみたいです。 世の中には、こういう便利なものがあるんですね! www.google.com ywatanabevltma…

圏論の道案内

Haskellの勉強をするついでに、圏論の勉強もちょこっとやっています。 分かりやすそうな圏論の本がありました。 「圏論の道案内」という本です。 圏論の道案内 ~矢印でえがく数学の世界~ (数学への招待シリーズ) 作者: 西郷甲矢人,能美十三 出版社/メーカー:…

はてなブログでLaTeXの数式を書く方法

はてなブログでLaTeXの数式を書く方法を調べてみました。 「MathJax」というJavaScriptライブラリーを利用する方法が多いみたいですね。 参考情報 MathJaxのCDNのリンクURL どこにCDNのリンクを埋め込むか? LaTeXコードの埋め込み 参考情報 ja.wikipedia.or…

関数と手続きの違い

関数型プログラミングの資料で、とても分かりやすい説明がありました。 ・2019/06 関数プログラミングことはじめ 2019年度版 http://www.mew.org/~kazu/material/2019-fp.pdf これの旧版である ・2015/11 関数プログラミングことはじめ http://www.mew.org/~…

数式を入力できるエディタ

数学の本を読んでいたら、数式を入力/編集できるエディタが欲しくなりました。 調べてみたら、Visual Studio CodeでTeXを編集するためのプラグインがありました。 後で試すときのためにメモ。 とりあえずなら、VSCode+TeXの組合せで数式を描けそうです。 …

圏論とダイクストラの構造化プログラミングの対応

YouTubeでモナド(圏論)の動画を見ていたら、興味深い説明がありました。 www.youtube.com 上記動画のスライド speakerdeck.com 動画だと5分35秒あたり、スライドだと19ページ目に、モナドの使いどころの説明がありました。 ダイクストラの構造化プログラミ…

モナドの説明図

モナドの説明図で分かりやすい図がありました。(メモ) 後で深掘りしてみたいと思います。 www.cs-study.com 1.モナド (Monads) モナドは,関数型言語で副作用を閉じ込めるのに使われているという触れ込みなどでプログラマの関心を集めています. ここで…

Windows上のVisual Studio CodeでHaskellを書く環境を整えたい

普段はWindowsでVisual Studio Codeを使っています。 Haskellの練習をするときも、使い慣れているVS Codeが使えたらいいな、と思いました。 Haskellを書きやすくするためのプラグインがいろいろあるみたいだけど、導入や設定の方法がよく分かりませんでした…

圏論の教材

Haskellの本を読みつつ、興味が湧いたのでLispの本も読んでいました。 型の話抜きで、関数型プログラミングの基礎を学ぶ場合、Lispもあり? Lispは関数型言語の先祖であり、マクロという便利な道具もあるので、今でも学ぶ価値はあると思います。 haskell.hat…

WindowsでLispを学習するときxyzzyが便利

関数型プログラミングの学習で、いろいろな本や教材に手を出しています。 最近は、時間があるときにHaskellやOCamlの本を読んでいます。 いろいろ思うところがあって、積読になっていたLispの本の復習も始めました。 「入門Common Lisp」という本です。 入門…

ウォークスルー Haskell

「型クラス」など、Haskellに出てくる用語を検索していたら、分かりやすい説明がありました。 walk.northcol.org 1. 型クラスとは型クラス(type class)は,データ型をカテゴライズする役割を持つ概念です. 例えば,数値型全般を表す Num という型クラスは…

プログラミングHaskell 第2版

「プログラミングHaskell 第2版」というHaskellの本を買いました。 プログラミングHaskell 第2版(紙書籍+電子書籍)www.lambdanote.com プログラミングHaskell 第2版 作者: Grahum Hutton,山本和彦 出版社/メーカー: ラムダノート 発売日: 2019/08/02 メデ…

Pleromaの名前の由来

分散型SNSのPleromaは、その名前から(イタリアの)ローマと何か関係があるのかな?程度に思ってました。 たまたま「Pleroma」を検索したら、「神の力」という意味の古代ギリシャ語らしく、ネーミングセンスが(中2病っぽくて)カッコイイ!と思いましたw …

入門Haskellプログラミング

今日本屋に行って関数型プログラミングの本を探してみると、Haskellの新刊がありました。 入門Haskellプログラミング 作者: Will Kurt,株式会社クイープ 出版社/メーカー: 翔泳社 発売日: 2019/07/31 メディア: 大型本 この商品を含むブログを見る パラパラ…

ダイクストラ法

「プログラミングの基礎」を復習します。 haskell.hatenablog.com (p.1) はじめに メトロネットワーク最短路問題を解くプログラムを作ること 本書は「ダイクストラ法」のプログラムを作ります。 haskell.hatenablog.com ダイクストラ法とは? 網目状になった…

Haskellの右結合と左結合

Haskellの勉強メモ。 haskell.hatenablog.com (p.121) 関数の型 Haskellでは、演算子もまた関数です。 演算子に()(丸カッコ)を付けると、関数として扱えます。 まだ、:tでその型も確認できます。 Prelude> :t (&&) (&&) :: Bool -> Bool -> Bool ->が2個も…

Haskellの矢印の記号「->」の読み方

Haskellの勉強メモ。 haskell.hatenablog.com (p.120) 関数の型 Prelude> :t not not :: Bool -> Bool ->という矢印のような表現が型の部分に出てきました。 関数の型はこのように「何かの型->何かの型」という型で表され、「矢印の元の型の値を受け取って、…

Haskellで型を調べる:tコマンド

Haskellの勉強メモ。 haskell.hatenablog.com (p.119) 型の確認と型注釈 GHCiでは、:t(コロンt)コマンドで実際にGHCiが認識している型を確認できます。 「:t」とは「:type」の省略形でした。 haskell.jp 型(type)の情報の出力(:tコマンド) GHCの対話環境…

関数型プログラミングを学んで何を作るのか?

そもそもだけど、目的がスッポリ抜けていると、勉強にも身が入りませんね?w 何をやるために、関数型プログラミングを学ぶのか?を考えてみました。(本末転倒) DApps(分散型アプリケーション) 最近…というほどでもないけど、「仮想通貨」「ブロックチェ…

Realm of Racket

Racketの本を買いました。 Realm of Racket: Learn to Program, One Game at a Time! 作者: Matthias Felleisen,Conrad Barski,David Van Horn,Eight Students of Northeastern University 出版社/メーカー: No Starch Press 発売日: 2013/06/13 メディア: …

Erlang VM上で動く言語

OracleがJavaのサポートを有償化しました。(困惑) そこで、JavaやJava VM上で動く言語を使わないで、大規模なWebサービスのバックエンドを開発するには、どんなプログラミング言語やツールを使えば良いか?を考えてみました。 希望条件 Erlang VM上で動く…

SchemeやRacketの本

Lispの方言であるSchemeやRacketの本がいろいろあった。 Scheme - Wikipedia Racket - Wikipedia Racketの本とか、面白そうw Realm of Racket: Learn to Program, One Game at a Time! 作者: Matthias Felleisen,Conrad Barski,David Van Horn,Eight Studen…