fp-tsの各moduleのdocumentの読み方
サイドバーのModulesに型クラスと型が同列に列挙されているので分かりづらいmrsekut.icon
https://gyazo.com/88c7518a529825ccbd2e556d5bcdadb3
例えば、
Arrayやbooleanは型だし、
AltやApplyは型クラスである
「type classes」の項目があれば型クラスだし、なければ普通の型
もしくは、Haskellなどの他の言語の知識があれば名前を見ればノリで判断できるmrsekut.icon
各ページのTABLE OF CONTENTSのざっくりとした読み方
小文字で始まっている項目は、基本的な項目
e.g. instances, combinators
大文字で始まっている項目は、具体的な型クラスのmethodの実装
e.g. Foldable, Monad, Contravariant
つまり、その大文字の項目と同名の型クラスが別moduleで定義されている
default実装を上書きして使うものがあれば、大文字の項目がある
たぶんmrsekut.icon
この小文字と、大文字がアルファベット順に並んでいるので、一見して分かりづらいmrsekut.icon
https://gyazo.com/2ca6ee1a2f08a8ae953d15d25cca7cb9
うーん、必ずしもそうじゃないっぽいmrsekut.icon
例えばEitherのcombinatorsにapFirstやapSecondがあるが、これらはApply型クラスのmethod 本来ならば、Applyという大文字の項目の下にapFirstを書くべきだと思うけどそうなっていない
入力も出力もそのmoduleになる関数は、例えば何かのmethodでもcombinatorsの欄に書くのだろうか #?? TABLE OF CONTENTSの小文字の項目の意味
combinators
そのmoduleの組み合わせで、新たなそのmoduleを構成する関数
入力も出力もそのmoduleになっているはずmrsekut.icon
constructors
primitiveな型から、そのmoduleを構成する関数
型クラスの場合は、そのmethodの定義に相当する
destructors
unwrapする系の関数
defaults
instance operations
instances
その型が、どの型クラスのinstanceになっているかの列挙
また、その定義の内容
number型が、EqやOrdのinstanceになっていることがわかる
interop
model
natural transformations
自然変換
例えば、Either e r→Opton rに変換する関数とか
refinements
値がそのmoduleの値かどうかを判別する関数
例えば、Eitherなら、isLeftやisRight
type classes
そのmoduleが型クラスとして定義されている場合に、この項目がある
型クラスのinterfaceの定義
utils
上記のどれにも該当しないそのmoduleを扱う便利関数
引数は大概そのmoduleのはずmrsekut.icon
返り値がそのmoduleにではないcombinatorsのようなイメージでもいいかもmrsekut.icon
結局、便利に使うために着目すべき項目は
combinatorsと、utilsかなmrsekut.icon
だから、せめてこの2つにはexampleが欲しいmrsekut.icon
testを見れば割と書いている
わかりづらい
exampleが書いていなくてどういうふうに使えばいいのかわかりづらい
関数の列挙だけがあるので、どれが重要で、どれが不要なのかが分かりづらい
hsとかと同じで、型クラスの意味と、個別具体的な型におけるmethod(具体例)を構造的に理解すると効率が良いはず
そういう大まかな学び方を知りたい
また、チームで使う場合に、そこの知識を共有していないとダルい
つまり、「どういう順序で学んでいくのがいいのか」をある程度明文化しておきたい
内容を教えるのではなく、学び方を教えられる状態にしたい
例えば、testを見たほうがわかりやすいのか?とか