我想知道具体为什么地图不在以下工作: {-# Language RankNTypes #-}
module Demo where
import Numeric.AD
newtype Fun = Fun (forall a. Num a => [a] -> a)
test1 :: Fun
test1 = Fun $ \[u, v] -> (v - (u * u * u))
test
我希望我的术语是正确的。 我要做到以下几点: data Hide a = ∀ b. (A.ToJSON (a b), A.ToJSON b) ⇒ Hide (a b)
mapHide ∷ (∀ c. (A.ToJSON (b c), A.ToJSON c) ⇒ a c → b c) → Hide a → Hide b
mapHide f (Hide a) = (Hide $ f a)
不
假设有一个身份的功能,那就是: T Id<T>(T t) { return t; }
我应该输入F? void F<T>(Func<T, T> f) { // This is not sound!
System.Console.WriteLine("{0}", f(1));
System.Console.WriteLine("{0}", f("one"));
}
st
我与一个类型级权限的系统试验,我试图以禁止不从相同的“源”来源值的分配,即: data A = A { a :: Value, b :: Value }
modify :: A -> A
modify (A v) = A $ v { a = v.a } -- should work
modify (A v) = A $ v { a = v.b } -- should *NOT* work