有沒有一種方法可以更簡潔地編寫它?我有很多看起來像這樣的功能。他們每個人都有一些布爾條件,然後要麼返回值或Nothing
像「when」這樣的函數返回一個值嗎?
rootMiddleware :: Application -> Application
rootMiddleware app req respond =
fromMaybe next . fmap respond $
serveIndex ["questionnaire"] "../app/answer/answer.html" req
<|> serveIndex ["survey"] "../app/builder/builder.html" req
<|> redirect [] "/survey/forms" req
where
next = app req respond
serveIndex :: [Text] -> FilePath -> Request -> Maybe Response
serveIndex prefix fp req =
if prefix `isPrefixOf` pathInfo req
then Just $ responseFile status200 [("Content-Type", "text/html")] fp Nothing
else Nothing
redirect :: [Text] -> ByteString -> Request -> Maybe Response
redirect pathParts url req =
if pathParts == pathInfo req
then Just $ redirectTo url
else Nothing
when
是非常接近,但它不會讓你在合用的返回值。這種情況有沒有相同的東西?
似乎很簡練我已經,你可以使用'布爾:: BOOL - > A - > A - >了'代替如果你發現更具吸引力的話,那麼「if .. then .. else」 – cdk