Haskell勉強会

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

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

Haskellを習得するコツが提案されていました。

 

f:id:hamamuratakuo:20191009040508p:plain

 

 

williamyaoh.com

 

Haskellを習得するために、最初は難しいことを学ばなくても大丈夫、とのこと。

 

In particular, here are some things that you emphatically do not need to understand in order to write real Haskell programs:

  • category theory
  • lambda calculus
  • lazy evaluation
  • lenses
  • monad transformers
  • effect algebras
  • recursion schemes
  • type programming
  • Template Haskell
  • proof languages like Coq and Agda
  • language extensions other than -XOverloadedStrings

 

特に、実際のHaskellプログラムを作成するために、特に理解する必要がないことを以下に示します。

  • 圏論
  • ラムダ計算
  • 遅延評価
  • レンズ
  • モナド変換器
  • 効果代数
  • 再帰スキーム
  • 型プログラミング
  • テンプレートHaskell
  • CoqやAgdaなどの証明言語
  • -XOverloadedStrings以外の言語拡張機能

 

なんと!Haskellやるのに圏論いらねー!だってwww

(ちょうど勉強してたところなのに~)

 

…まあ、圏論は後回しでもいいですよね?

圏論を学び出したら、時間がすごいかかるので)

 

とりあえず、Haskellを使うために最低限の知識は、以下の4つだそうです。

 

What do you need to write real Haskell? The core of the language is extremely simple. If you understand how to write and use

  • pure functions and values
  • pattern matching
  • sum and product types
  • how to glue together IO to make side effects

 

本物のHaskellを書くには何が必要ですか? この言語の中核は非常に単純です。 作成方法と使用方法を理解している場合

  • 純粋な関数と値
  • パターンマッチング
  • 直和型と直積型
  • 副作用を作るためにIOをつなぐ方法

 

Haskellの入門書だと、どこら辺ですかね?

「入門Haskellプログラミング」の目次で見てみましょう。

 

haskell.hatenablog.com

 

1.純粋な関数と値

「純粋」ってことは、参照透過性があること。副作用がないこと。

不変なデータ構造とかですかね。

→ LESSON 2 関数と関数型プログラミング


2.パターンマッチング

→ LESSON 7 再帰のルールとパターンマッチング

 

3.直和型と直積型

→ LESSON 16 直積型と直和型

 

4.副作用を作るためにIOをつなぐ方法

モナドを簡単に書くdo記法とか?

→  LESSON 21 Hello World!:IO型の紹介

 

この辺りを先にサッと眺めてから、残りも読み進めてみればいいと思いました。

最初に基本を押さえて、徐々に肉付けしていくかんじですかね?

 

 

 

入門Haskellプログラミング

入門Haskellプログラミング