Haskellを始める時に役立つ資料

Haskellを始める時に役立つ資料  

<br>

関数型プログラミングが初めてで、読んでもちょっとわからないって方は  
OCamlをおすすめします。  
[OCamlで始める関数型プログラミング](https://qiita.com/kxkx5150/items/72e48deb68a8b1e0f1b1)  
[プログラミングの基礎](https://www.amazon.co.jp/%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%9F%E3%83%B3%E3%82%B0%E3%81%AE%E5%9F%BA%E7%A4%8E-Computer-Science-Library-%E6%B5%85%E4%BA%95/dp/4781911609)は名著です。この本でわからないって方は厳しいと思います。  

<br><br>

※追記
haskellをやっていて、副作用云々はいいから..
ってなった方はOCamlベースのF#がおすすめです。
haskellと並行してやるのもおすすめです。
[F# を知ってほしい](https://qiita.com/cannorin/items/59d79cc9a3b64c761cd4)  


<br><br><br>






# 日本語リンク集

<br>

[Haskell 超入門](https://qiita.com/7shi/items/145f1234f8ec2af923ef)  
網羅的に説明されており、とりあえず始める人におすすめ

<br>

[ウォークスルー Haskell](http://walk.northcol.org/haskell/)  
網羅的に説明されており、とりあえず始める人におすすめ

<br>

[Haskell 基本構文のまとめ](https://qiita.com/gomi_ningen/items/581eaed9cf232cac423a)  
すごいHaskell楽しく学ぼうの１〜５章の内容をまとめ

<br>

[Haskellらしさって？「型」と「関数」の基本を解説！【第二言語としてのHaskell】](https://eh-career.com/engineerhub/entry/2017/08/25/110000)  
[実践編！Haskellらしいアプリケーション開発。まず型を定義すべし【第二言語としてのHaskell】](https://eh-career.com/engineerhub/entry/2017/09/11/110000)  
[発展編！ Haskellで「型」のポテンシャルを最大限に引き出すには？【第二言語としてのHaskell】](https://eh-career.com/engineerhub/entry/2017/10/03/110000)  
力作　わかりやすい

<br>

[お気楽 Haskell プログラミング入門](http://www.nct9.ne.jp/m_hiroi/func/haskell.html)  
お気楽じゃありません。じっくり学べます。

<br>

[Haskell個人メモ](https://qiita.com/YusukeHosonuma/items/41ad9346b6e3a4d3789c)  
確認用

<br>

[Haskellチートシート](https://qiita.com/techno-tanoC/items/1fa1c65db08da2440fc4)  
確認用

<br>

[j5ik2o/haskell-cheat-sheet.md](https://gist.github.com/j5ik2o/4334482)  
確認用

<br>

[とほほのHaskell入門](https://www.tohoho-web.com/ex/haskell.html)  
忘れた時の確認用

<br>

[What I Wish I Knew When Learning Haskell 2.2 の日本語訳](https://github.com/shiatsumat/wiwinwlh-jp/wiki)  
全部翻訳ではありませんが有用です

<br>

[やさしい Haskell 入門](http://www.sampou.org/haskell/tutorial-j/index.html)  
古いですが読んで見ても

<br>

[すごいH本が楽しかったのでまとめた](https://qiita.com/ta-ka/items/8679737ac70cf1dc1d78#functor)  
定番本のまとめ

[すごいH本読んだからまとめ 1 「関数の呼び方、関数の定義の仕方」](https://qiita.com/yumakkt/items/ce82eb3ffae874faf249)  
定番本のまとめ

[本物のプログラマはHaskellを使う](https://xtech.nikkei.com/it/article/COLUMN/20060801/244810/?TOC=3)  
日経ソフトウエア 連載

<br><br>

## 関数の合成

<br>

[Haskellの関数合成、または (.) 関数](https://qiita.com/etoilevi/items/abd6c0063eae11a43237)  

<br>

[関数合成を機械的に扱う試み](https://qiita.com/7shi/items/f2c1365b792aa6046a49)  

<br>

[Haskellの関数合成でひっかかってたこと](https://ruicc.hatenablog.jp/entry/20111004/1317752261)  

<br>

[Haskell の関数合成](https://jutememo.blogspot.com/2008/06/haskell_29.html)  

<br><br>

## モナド
完全に理解しなくても、プログラミングしていく過程で理解していく
で良いと思います。
<br>

[箱で考えるFunctor、ApplicativeそしてMonad](https://qiita.com/suin/items/0255f0637921dcdfe83b)  
絵を見ながら考えるとわかりやすい

<br>

[だんだんわかる モナド入門](https://qiita.com/fujiy/items/6388cade8bf4797fb1d4)  
絵を見てからおすすめ

<br>

[関数型つまみ食い: モナドが難しいと思われている理由](https://ubiteku.oinker.me/2016/01/20/%E9%96%A2%E6%95%B0%E5%9E%8B%E3%81%A4%E3%81%BE%E3%81%BF%E9%A3%9F%E3%81%84-%E3%83%A2%E3%83%8A%E3%83%89%E3%81%8C%E9%9B%A3%E3%81%97%E3%81%84%E3%81%A8%E6%80%9D%E3%82%8F%E3%82%8C%E3%81%A6%E3%81%84%E3%82%8B/)  
わかりやすい

<br>

[作って理解する Haskell の Monad](https://qiita.com/satosystems/items/e8788f05924cef226493)  
手を動かすのは大事

<br>

[30分でわかるJavaScriptプログラマのためのモナド入門](http://kentechdoc.blogspot.com/2018/12/30javascript_4.html)  
一部で誤解されてる方。自分的にはすごく役に立ちました。

<br>

[難しいのは見た目だけ！？Haskellのモナドの「たった2つのルール」を簡単に理解する！](https://qiita.com/south37/items/06cfa95aa9c8f2ecb2e9)  
わかりやすい

<br>

[モナドはポケモン。数学が出てこないモナド入門](https://qiita.com/hiruberuto/items/8bbc0343bf794c368287)  
わかりやすい

<br>

[世界一わかりやすいStateモナドのしくみ、あるいは猫でもわからないモナドのおはなし](https://qiita.com/acple@github/items/779792002ba67161d37c)  
モナドって結局なんなの

<br>

[爆速でモナドを理解する](https://qiita.com/tezca686/items/73d135e372d547ad7266)  
演算子>=>について

<br>

[モナドを理解する - 迷える者への手引き](https://www.infoq.com/jp/articles/Understanding-Monads-guide-for-perplexed/)  
じっくりやらないと理解できないかも

<br>

[モナドって結局何なのよ?](https://3f2cm.github.io/join_to_Monad/join_to_Monad.html)  
わかりやすい

<br>

[いろんなMonadをdo構文で](https://qiita.com/knknkn1162/items/722b34c05e71f7613d09)
do構文

<br>

[モナド則がちょっと分かった？](https://qiita.com/7shi/items/547b6137d7a3c482fe68)  
[モナド則の絵を描いてみた](https://qiita.com/7shi/items/547b6137d7a3c482fe68)  
[IOモナドを素手で触ってみた](https://qiita.com/7shi/items/0a90d7ba31355e1c73aa)  
Haskell 超入門の7shiさん。

<br>

[モナド初学者の鬼門, Effect / IO モナドを攻略する](https://qiita.com/BlueRayi/items/83423710eeec99d7b2b7)  
純粋な関数と純粋でない関数

<br>

[Maybeモナド と Listモナド](https://qiita.com/gomi_ningen/items/b33120ecb4e7528d6986)
問題集  

<br>

[絶対に理解出来ないモナドチュートリアル](https://konn-san.com/prog/never-understood-monad-tutorial.html)  
悩んで進展が無いならコードを書こう

<br>

[確率とモナドと確率的プログラミング](https://qiita.com/lotz/items/7c7df718d1a596cac920)  
確率分布はモナドだ

<br>

[モナドのすべて](http://www.sampou.org/haskell/a-a-monads/html/index.html)  
モナモナ

<br>

[「Haskellのモナド完全に理解した」試験問題](https://zenn.dev/lotz/articles/fd7cdb6c539d56ac595c)  
チェック

<br>

[圏論入門](https://qiita.com/norkron/items/237735106ee6e5333678)  
圏論は知らなくてもプログラミング出来ますが、時間があれば

<br>

<br><br>


## ビルドツール

<br>

[Haskellのビルドツール"stack"の紹介](https://qiita.com/tanakh/items/6866d0f570d0547df026)  

<br>

[Haskellのstackによるプロジェクトについて](https://qiita.com/ogata-k/items/2b21326b2b7351bfc28c#packageyaml--testprojectcabal%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB)  



<br><br>

## Haskell 文字列

<br>

[Haskell 文字列変換入門](https://qiita.com/satosystems/items/e07e9907e4da9ab853fc)  
それぞれの文字列の特徴

[Haskellの文字列型：分類と特徴](https://qiita.com/mod_poppo/items/740659702f31216fdade)  
Haskellの文字列型について


<br><br>


## SDL2のstack buildが失敗する

msys2の環境で

<br>

mingw-w64-x86_64-pkg-config
と
mingw-w64-x86_64-pkgconf

がコンフリクトして起こる問題のようです。

pkgconfはcmake等に必要

pkg-configはSDL2に必要

うーん

ghcup, stack関連のフォルダ全削除して
ghcupで再びクリーンな環境で
```
pacman -S mingw-w64-x86_64-pkgconf mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_mixer mingw-w64-x86_64-SDL2_ttf
```
でstack buildすると上手くいきました。







<br><br>



## プログラミング　サンプル 

<br>

[プログラム・プロムナード／Haskellプログラミング](https://www.ipsj.or.jp/magazine/promenade.html)  

<br>

[AtCoder に登録したら解くべき精選過去問 10 問を Haskell で解いてみた](https://qiita.com/hsjoihs/items/25a08b426196ab2b9bb0)  

<br>

[Ninety-Nine Haskell Problems](https://wiki.haskell.org/H-99:_Ninety-Nine_Haskell_Problems)  

<br>

[Haskell for all](https://www.haskellforall.com/2015/10/basic-haskell-examples.html)  

<br>

[Haskell by Example](http://lotz84.github.io/haskellbyexample/)  

<br>

[CPUの創りかた](https://qiita.com/eijian/items/d721a146fa46e5877225)  

<br>

[Haskell で簡単な CLI ツールを作ってみる](https://qiita.com/Hexirp/items/3b46fe38bed365124e8d)  

<br>

[Haskellで処理系を作る](https://scrapbox.io/mrsekut-p/Haskell%E3%81%A7%E5%87%A6%E7%90%86%E7%B3%BB%E3%82%92%E4%BD%9C%E3%82%8B)  

<br>

[cyga/real-world-haskell](https://github.com/cyga/real-world-haskell)  

<br>

**[lotz84/haskell](https://github.com/lotz84/haskell/tree/master/docs)**  
すごい情報量。1つ1つが下記のような感じです
[graphics](https://github.com/lotz84/haskell/blob/master/docs/graphics.md), [構文解析器](https://github.com/lotz84/haskell/blob/master/docs/parser.md)  , [web](https://github.com/lotz84/haskell/blob/master/docs/web.md)  

<br><br>

## F#

<br>

MSが作ったOcamlベースの言語 .NET

[OCamlを始める時に役立つ資料](https://qiita.com/kxkx5150/items/72e48deb68a8b1e0f1b1)  

[F#を始める時に役立つ資料](https://qiita.com/kxkx5150/items/febceda472f6e3e356a5)  


<br><br>

## Windows GUI
とりあえず覚える為にWindowsアプリ作成するか  
WindowsアプリだしGUIはどうしようって方は



### win32 api


Win32をラッピング
[haskell/win32](https://github.com/haskell/win32)  


[win32を使ったサンプル](https://github.com/kxkx5150/Haskell-Win32API)  





### Webview2

webview2でGUIをHTMLで作成
Webview2呼び出しをDLL化しました。
DLLはC++で作成

メッセージでやり取り、jsをインジェクション
https://github.com/kxkx5150/Haskell-Webview2






<br><br>

<br><br><br><br><br><br>