Ben Learn you a haskell kitabın içinden gidiyorum ve Bölüm 8'de Bu işler buHaskell - case ifadesi
data LockerState = Taken | Free deriving (Eq, Show)
type Code = String
type LockerMap = Map.Map Int (LockerState, Code)
lookup' :: Int -> LockerMap -> Either String Code
lookup' num_ map_ =
case (Map.lookup num_ map_) of
Nothing -> Left $ "LockerNumber doesn't exist!"
Just (state, code) -> if state == Taken
then Left $ "LockerNumber already taken!"
else Right $ code
benzeyen bir kod parçacığı vardır içeride bekçi. Ancak,/else bloğu aşağıdaki gibi
Bu, derleme değil. Haskell'deki gardiyanların kullanımının çok kısıtlayıcı/sezgisel olmadığı görülmektedir. SO Ex1SO Ex2. Muhafızları hangi yerlerde kullanabileceğimi okuyabileceğim kesin bir kaynak var mı?
Büyük cevabı! Özellikle 'Korumalar' kalıplar için sadece kısıtlamalar – skgbanga