【发布时间】:2018-05-19 03:53:41
【问题描述】:
我目前正在尝试使用 F# 将链接函数建模为 AST 的一部分(尽管目前它更像是一个链)。每个环节都是一个功能,它也可能附有一条链。但是,要指定附加到链接的链的类型签名,您还必须添加更多类型参数。但是你这样做了,然后又添加了一个参数,等等,无穷无尽。下面是一个例子。
type Chain<'a, 'b, 'c> =
| Link of ('a -> 'b) * Chain<'c> // This doesn't work - you need more type params supplied
| End of 'a
我希望能够将链表示为 Link ((fun x -> x + 5), Link... 等,直到它到达 End,但我无法在不遇到类型爆炸问题的情况下这样做。
如果有人能指出一个有助于创建任意长度的任意函数链的方向,我将不胜感激。
【问题讨论】:
-
完全不清楚你想做什么以及阻止你做的事情。请尝试澄清问题。
标签: function f# functional-programming abstract-syntax-tree