gpt4 book ai didi

haskell - undefined variable ,Haskell

转载 作者:行者123 更新时间:2023-12-03 14:29:39 24 4
gpt4 key购买 nike

我有一个简短的问题。 Haskell 正在抛出 57 - Undefined variable "f" error在我身上,我不知道为什么。如果你能看看这个,我将不胜感激。

代码:

eval :: Expr -> Environment -> Float
eval expr env = eval' expr
where
eval' :: Expr-> Float
eval' (Num num) = num
eval' (App app exprs) = foldl1 (f) (map eval' exprs) -- **Line 57**
eval' (Id id) = 5
where
f = getFunctionForApp app -- **f is here**
getFunctionForApp :: String -> (Float->Float->Float)
getFunctionForApp "+" = (+)
getFunctionForApp "-" = (-)
getFunctionForApp "*" = (*)
getFunctionForApp "/" = (/)
getIdVal :: String -> Environment -> Float
getIdVal id ((curId, val):envrs)
|curId == id = val
| otherwise = getIdVal id envrs

类型定义:
data Expr = Num Float | Id String | App String [ Expr ]
deriving (Eq, Ord, Show)
type Environment = [ ( String, Float ) ]

最佳答案

where 块仅适用于它之前的情况,而不适用于 eval' 的所有情况。功能。所以feval' (Id id) = 5 中定义(但未使用) ,但它不在第 57 行的范围内。要解决此问题,您需要将 where 块直接移动到第 57 行之后。

关于haskell - undefined variable ,Haskell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7905906/

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