我有一个异构列表和一个函数
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)
并想遍历不同类型hlist的lists ,并构建每个列表的头部的列表。这个想法是这样的:
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)