几乎是标题,但让我们详细说明:
假设我有一些类型的类SomeTypeClass和不同类型A,B,C它们都有一个实例吧.
让我们进一步假设我有一个功能
fun :: (SomeTypeClass a) => Maybe a -> Result
Run Code Online (Sandbox Code Playgroud)
对于某些类型常数Result.
可以表达
fun (Nothing :: Maybe A)fun (Nothing :: Maybe B)fun (Nothing :: Maybe C)某种程度上产生不同的结果
(可能通过一些编译器扩展来提供不同的实现,以fun取决于参数类型或其他东西.)
当然,有Result= String和SomeTypeClass a= (Monoid a, Show a):
import Data.Foldable
doSomething :: (Show a, Monoid a) => Maybe a -> String
doSomething = show . fold
doSomething (Nothing :: Maybe String) == "\"\""
doSomething (Nothing :: Maybe [Int] == "[]"
doSomething (Nothing :: Maybe (Product Int)) == "Product {getProduct=1}"
doSomething (Nothing :: Maybe (Sum Int)) == "Sum {getSum=0}"
Run Code Online (Sandbox Code Playgroud)
当然不是唯一的例子,但可能是最简单的(也就是说,至少类似于你在实际代码中可能会遇到的东西).
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |