9.1 から復習
function body を lambda 式で書く場合にも再帰関数にできる?
let rec ... とすればできそう
9.3
checkedAddress が shadowing されている
一度にかけるが、あえてそうしてない
あとで AsyncResult 版も出てくるから、その比較のためかな
toAddress でヘルパー関数の依存を渡すときに |> (toAddress checkAddressExists) としなくて良い
pipe |> の結合度が効いているなぁ takezaki.icon
なんとなく書いた関数が generic な関数だった話
シグネチャを決め打ちで書くと、こういう話を見落とすなぁ
Haskell には Typed holes というものがある
新しいライブラリとかを使うときに、 Typed holes を活用して様子を確認しながら実装することがある
9.4
とりあえずコンパイルを通るようにしたいときに failWith を使う
こういうのは他言語でも使えるテクですね takezaki.icon
Kotlin だと TODO() とか、 Scala だと ??? とか
0Mってなに?
decimal の接尾辞
yield! ってなに?
9.5
kakkun61.icon ここの let は let rec にしちゃうと再帰になるのか
code:fs
let validateOrderWithDependenciesBakedIn =
validateOrder checkProductCodeExists checkAddressExists
このためにちょっとしたアダプターを書くこともできるし、単純にもっと命令型のコードに切り替えることもできます。その場合は次のように、明示的に各ステップの出力を値に割り当てます。
いうて命令型か?
kakkun61.icon 知らんかった
kakkun61.icon 知らんかった
DI の用語っぽい?
suave.io
HTTP Error 502.3 - Bad Gateway
リーダーモナドやフリーモナド?
リーダーモナド
モナドだから文脈に依存関係を織り込むことができる
読みたい時に read すればいい
完全に理解した(してない) takezaki.icon
フリーモナド
よく知らないが、良さげな記事はあった
ドメインエラー v.s. インフラストラクチャエラー
一口に障害と言っても、予想されるもの「特定のサービスが返す特定のエラー」の場合はドメインエラーにしておくと良いのでは
たしかに takezaki.icon
ダウンタイムが決まっていたり SLA が低かったり
10.2.1 の前まで読んだ