我有以下代码,但我不知道应该输入什么??。还是多态模式无法完成?
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE ViewPatterns #-}
module Data.Tuple.Single.Class
( Single (..)
, pattern Single
) where
class Single t where
wrap :: a -> t a
unwrap :: t a -> a
pattern Single :: Single t => a -> t a
pattern Single a <- (unwrap -> a) where
Single a = wrap a
{-# COMPLETE Single :: ?? #-}
Run Code Online (Sandbox Code Playgroud)
GHC文件说,当所有conlikes是多态的时,您必须键入conlike。
进行时?? (),编译成功。但是什么()意思呢?GHC表示使用仍然不尽全力。
{-# LANGUAGE PatternSynonyms #-}
{-# LANGUAGE …Run Code Online (Sandbox Code Playgroud) 假设有一个身份函数,它是:
T Id<T>(T t) { return t; }
Run Code Online (Sandbox Code Playgroud)
我应该输入F什么?
void F<T>(Func<T, T> f) { // This is not sound!
System.Console.WriteLine("{0}", f(1));
System.Console.WriteLine("{0}", f("one"));
}
static void Main() {
F(Id);
}
Run Code Online (Sandbox Code Playgroud)
我认为C#没有N级多态性,C#不能正常输入F.这是正确的吗?
然后如何解决这些问题?