小编kak*_*n61的帖子

为多态模式同义词编写COMPLETE编译指示吗?

我有以下代码,但我不知道应该输入什么??。还是多态模式无法完成?

{-# 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)

haskell ghc pattern-synonyms

7
推荐指数
1
解决办法
164
查看次数

如何解决C#中的N级多态?

假设有一个身份函数,它是:

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.这是正确的吗?

然后如何解决这些问题?

c# type-systems rank-n-types

1
推荐指数
1
解决办法
183
查看次数

标签 统计

c# ×1

ghc ×1

haskell ×1

pattern-synonyms ×1

rank-n-types ×1

type-systems ×1