我使用=:=作为示例类型lambda来进行简单的最小示例。 =:=类型有两个参数,我想在类型级别咖喱一个。 我把幼稚的做法type Curry[G] = {type l[L] = L =:= G}但在实际使用它会导致错误: type X = Int
type Y = Int
type CurryInt[T] = T =:= Int
type Curry[G] = {type l[L] =
在下面的代码 Idris> :t \x => x + x
\x => x + x : Integer -> Integer
伊德里斯导出一个整数类型的X变量,其中我认为它应该得到像在Haskell接口不限于: Haskell> :t (\x y -> x + y)
(\x y -> x + y) :: Num a => a -> a -> a
然后它甚至不像一个Integer,接受Do
在下面的代码中,我无法正确安排输入/输出,以至于()和()都按预期工作。我试过在属性和函数参数中切入/切出,但总是以不正确的键入错误结束。 class KStateMachine(private val states: List<StateHandler>) {
var currentState: KClass<out StateHandler>
private set
priva
我是Ocaml的新手,当我为lambda微积分编写解释器时遇到了一个奇怪的错误。 type exp =
Num of int
| Str of string
| Err
| Var of string
| Lambda of string * exp
| App of exp * exp
;;
type value =
N
此代码 {-# LANGUAGE GADTs #-}
data Expr a where
Val :: Num a => a -> Expr a
Eq :: Eq a => Expr a -> Expr a -> Expr Bool
eval :: Expr a -> a
eval (Val x) = x
eval (Eq x y) = (eval x) == (e