他們,我有一個問題。我在我的Haskell程序中有兩個函數。Haskell:在Haskell中使用錯誤/異常
type Env = String -> Int
emptyEnv :: Env
emptyEnv _ = error "Failed"
insertEnv :: String -> Loc -> Env -> Env
insertEnv s loc env = case env s of
(error "Failed") -> (\inp -> (if inp==s then loc else env s))
_ -> env
所以我的emptyEnv應該總是給出錯誤信息。使用其他函數insertEnv,您可以將元素插入Env。但是因此你需要檢查Env是否爲空,並且這會在屏幕上顯示一個錯誤。現在我的問題:上面的代碼不起作用,因爲錯誤「失敗」不是函數insertEnv中的env的情況。你有一個想法如何正確處理錯誤,以便你可以插入元素env?
感謝adamse。快速脫離主題。現在我試着用'emptyEnv = \ _->( - 1)'和'insert s loc env = \ inp - >(如果inp == s然後loc else env s)'但現在當我這樣做時'env =插入「x」42(插入「y」17 emptyEnv)'然後'env「y」'它給我-1所以空的Env的值。那裏發生了什麼?它在5分鐘前工作!? –
你想'... else env inp'。 – adamse