小编lai*_*ifs的帖子

异构列表上的这种类型错误是什么意思?

我有一个异构列表和一个函数

type ('ls,'tl) hlist =
  | Nil : ('a,'a) hlist
  | Cons: 'a * ('l, 't) hlist -> ('a -> 'l, 't) hlist

let rec headlist l = 
  match l with
  | Cons (h, t) -> Cons (head h, headlist t)
  | Nil -> Nil
Run Code Online (Sandbox Code Playgroud)

并想遍历不同类型hlistlists ,并构建每个列表的头部的列表。这个想法是这样的:

headlist Cons( [1,2,3], Cons( ['a','b'], Cons( [true,false], Nil ))) 
= Cons( 1, Cons( 'a', Cons( true, Nil)))
Run Code Online (Sandbox Code Playgroud)

但是,我遇到了类型错误。

Error: This expression has type ('a, 'b list -> 'a) hlist …
Run Code Online (Sandbox Code Playgroud)

ocaml gadt

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

标签 统计

gadt ×1

ocaml ×1