मुझे एक त्वरित प्रश्न है। हास्केल 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) ]
मैं ईमानदारी से जवाब नहीं जानता लेकिन मैंने सोचा कि जहां ब्लॉक को स्टेटमेंट के बाद आना पड़ा था। दूसरे शब्दों में, क्या आपने पूरी तरह से एक लाइन को अवरुद्ध करने की कोशिश की है? – Ramy