Почему не случай с предикатными стражами в дополнение к защитным узорам?Почему не случай с предикатными стражами в дополнение к охранникам?
{-# LANGUAGE MultiWayIf, LambdaCase #-}
module Main where
import System.Info (os)
import Control.Applicative ((<$>))
import Data.Char (toLower)
import Data.List (isPrefixOf)
main :: IO()
main = print . ($ toLower <$> os) $ \x -> if
| "mingw" `isPrefixOf` x -> "windows"
| "darwin" == x -> "mac"
| otherwise -> "linux"
будет симпатичнее как:
main = print $ case toLower <$> os of
x | "mingw" `isPrefixOf` x -> "windows"
| "darwin" == x -> "mac"
| otherwise -> "linux"
или даже:
main = print $ case toLower <$> os of
| ("mingw" `isPrefixOf`) -> "windows"
| ("darwin" ==) -> "mac"
| otherwise -> "linux" -- when pattern absent: otherwise = const True
Что вы думаете? Вы предлагаете новый синтаксис Haskell? –
да, я так думаю – user1441998
Кажется, разумная идея, но разве это полезно? Я никогда не пропускал эту функцию. – augustss