gpt4 book ai didi

Haskell - 采用相同映射的函数映射

转载 作者:行者123 更新时间:2023-12-01 10:38:09 25 4
gpt4 key购买 nike

我目前正在用 Haskell 编写编程语言。这种编程语言类似于 Factor,是一种基于堆栈的串联语言。然而,在走得很远之后,我遇到了障碍:我有一个 Data.Map 类型:

Map.Map 字符串([YodaVal] -> YodaVal,Int)
但是我需要存储在 map 中的函数将 map 作为参数,这样我就可以在递归时保留环境,并且还可能允许递归函数定义和 Haskell 的递归定义 --> Yoda 函数。但是,该类型将如下所示:

type Env = Map.Map String ([YodaVal] -> Env -> [YodaVal] -> YodaVal, Int)
当然可以扩展为:

Map.Map 字符串([YodaVal] -> Map.Map 字符串 ... -> [YodaVal] -> YodaVal,Int)

最佳答案

你可以用newtype来描述无限类型:

newtype Env = Env {getEnv :: Map String ([Val] -> Env -> [Val] -> Val, Int))}

这将进行类型检查,并且运行时表示就像没有包装器一样。

关于Haskell - 采用相同映射的函数映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32335441/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com