Существует несколько способов. В данном конкретном случае:
putStrLn . fromMaybe "Error"
Но это довольно частный случай. Чуть менее специальный будет использовать Maybe
катаморфизма:
maybe (putStrLn "Error") putStrLn
Многих типов в Haskell приходят с подобным катаморфизмом, которые могут быть использованы, чтобы избежать case
. Но самый общий случай использовать специальное расширение языка, известного как LambdaCase
, который позволяет писать
\case
Just x -> putStrLn x
Nothing -> putStrLn "Error"
В отличие от fromMaybe
(который специально для Maybe
и регулярности случаев, используемых здесь) или катаморфизм (который специально для типов, которые предоставляют один), это можно использовать для анонимизации любой лямбды, соответствующей шаблону.
«Просто x -> putStrLn x» по-прежнему не является точечным. – immibis