私は現在、素晴らしい fsharpforfunandprofit Web サイトの計算式シリーズに取り組んでおり、計算シリーズのレッスン 4「ラップされた型」に関して質問があります。もう少し読んでみましたが、把握していない重要な概念があります。
実際、私は bind の定義を理解しています:
member Bind : M<'T> * ('T -> M<'U>) -> M<'U>
しかし、この時点で理解できないことの 1 つは、let! を使用した計算式で使用するときの魔法です。
たとえば、次のようになります。
let product'' =
dbresult {
let! custId = getCustomerId "Alice"
let! orderId = getLastOrderForCustomer "" // error!
let! productId = getLastProductForOrder orderId
printfn "Product is %s" productId
return productId
}
printfn "%A" product''
getCustomerId "Alice"はM<'T>を返してくれますが、custId は既にラップされていない 'Tであり、この魔法のトリックがどのように機能するかはどこにもわかりません...
let に隠されたコードの一部ですか! Fsharpコアアセンブリ内の命令?誰かが私にどのようにさせてくれるのか説明してもらえますか! ラッパーから T' を取り出しますか?
ご説明ありがとうございます