相关疑难解决方法(0)

削弱GADT类型约束以处理不可预测的用户输入

我正在尝试使用GADT来获得良好约束的类型,但是在编译期间无法处理某些依赖项 - 例如用户输入.让我们考虑遵循AVL树定义:

data Zero
data S a

data AVL depth where
  Nil :: AVL Zero
  LNode :: AVL n -> Int -> AVL (S n) -> AVL (S (S n))
  RNode :: AVL (S n) -> Int -> AVL n -> AVL (S (S n))
  MNode :: AVL n -> Int -> AVL n -> AVL (S n)
Run Code Online (Sandbox Code Playgroud)

GADT的魔力确保每个AVL树都很平衡.我可以定义一些基本功能,如

singleton :: a -> AVL (S Zero) x
singleton a = MNode Nil a Nil

insert :: a -> AVL …
Run Code Online (Sandbox Code Playgroud)

io haskell gadt

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

标签 统计

gadt ×1

haskell ×1

io ×1