Haskell-从无限数据列表中提取参数

假设我在我的 Haskell 代码中定义了以下数据结构

data Exp = Expnum Int - constant
          | Expplus Exp Exp - addition

从技术上讲,这个表达式可以有无数项。如果我想提取其条款,我该怎么做?(我想不出办法,因为我不确定如何在 Haskell 中处理无限数量的参数)

前任:

-- Example: (Expplus (Expplus (Expplus (Expnum 1) (Expnum 2)) (Expnum 3)) (Expnum 4))

extract :: Exp -> [Int]
... -- Not sure how to deal with infinite number of Expnum :(

-- Expected output [1,2,3,4]

回答

您可以构建一个列表,其中每个“叶子”都将添加到尾部,例如:

helper :: Exp -> [Int] -> [Int]
helper (Expnum i) = (i:)
helper (Expplus sa sb) = helper sa . helper sb

现在我们可以使用这个助手来制作一个完整的列表,我把它留作练习。


以上是Haskell-从无限数据列表中提取参数的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>