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