我刚从 F# 开始,我想知道如何破译以下类型以及它们从书籍示例中代表什么:
type subs = Map<string,exp> option
type lp = (subs->subs) ->subs->subs // A LP computation
我知道子类型只是一个带有字符串和相关 exp 类型的映射......但我不明白“->”的使用以及lp
类型分配的内容......
对破译lp
类型的任何帮助都会很棒
->
代表一个函数。例如,string -> int
表示将字符串作为参数并返回整数的函数。
如果链接->
,则从右到左阅读它:a -> b -> c -> d
is a -> (b -> (c -> d))
。
函数可以将函数作为参数,所以lp
is (subs -> subs) -> subs -> subs
,也写为(subs -> subs) -> (subs -> subs)
。它是一个带有函数的函数。如果它令人困惑,请尝试将其视为fn -> (subs -> subs)
, where type fn = subs -> subs
,一个函数的类型。