根据 GHC 用户指南,如果函数具有类型签名,则显式绑定的隐式参数仅传播到递归调用中,否则,将使用来自原始调用的隐式参数。
fu True = ?gn
fu False = let ?gn = not ?gn in fu True
br :: (?sp :: Bool) => Bool -> Bool
br True = ?sp
br False = let ?sp = not ?sp in br True
Run Code Online (Sandbox Code Playgroud)
ghci> let ?gn = True in fu False
True
ghci> let ?sp = True in br False
False
Run Code Online (Sandbox Code Playgroud)
但是,如果我想fu
在保留其行为的同时提供类型签名怎么办?我可以这样做吗?
归档时间: |
|
查看次数: |
85 次 |
最近记录: |