5
背景:我不明白~并正在请求一个用例。使用2函数理解`〜`
考虑:
{-# LANGUAGE GADTs #-}
f :: a ~ b => a -> b -> b
f a b = a
g :: a -> a -> a
g a b = a
在我看来,这两个功能都是平等的:
Prelude> :r
[1 of 1] Compiling Main (TypeEq.hs, interpreted)
Ok, modules loaded: Main.
*Main> f 10 20
10
*Main> g 10 20
10
在什么情况下会是使用f
超过g
有用吗?
的确,没有优势在这种情况下:这些功能是平等的。我想你需要类似家庭或GADT的东西来看看一些有用的东西。或者$ Data.Typeable.eqT $可以作为一个很好的例子。 – chi
如果你想知道如何以一种非常有用的方式使用'〜',请阅读Chris Done这篇伟大的博客文章:http://chrisdone.com/posts/haskell-constraint-trick – Shersh