【发布时间】:2013-11-04 20:33:08
【问题描述】:
显然,通过一些 GHC 扩展,可以定义一种长度编码在类型中的列表类型,如下所示:
{-# LANGUAGE GADTs, EmptyDataDecls #-}
data Z
data S a
data List l a where
Nil :: List Z a
Cons :: a -> List l a -> List (S l) a
虽然我明白为什么这很有用,但我在实际使用它时遇到了麻烦。
如何创建这样的列表? (除了硬编码到程序中。)
假设有人想要创建一个程序,从终端读取两个这样的列表并计算它们的点积。虽然很容易实现实际的乘法函数,但程序如何读取数据?
您能否指出一些使用这些技术的现有代码?
【问题讨论】:
标签: haskell types static-typing