尤川豪   ·  1年前
445 貼文  ·  275 留言

functional programming 的 maybe 有什麼用處?

Maybe 其實是用來強迫開發者記得處理 null 的情況

舉例來說 用 php 常常會寫出以下的 code

function user_card($userId)
{
    $user = User::find($userId);

    echo '<div>user name is ' . $user->name . '</div>';
}

看起來很單純 但實務上會有問題 因為有時候傳進去的 user id 找不到

user 會變成 null

所以開發者要記得去檢查 $user === null 之類的情況

但是用 FP 語言的話 會直接變成 Maybe 的其中一個可能值

compiler 會逼你處理

userCard : Maybe User -> Html Msg

userCard maybeUser =
    case maybeUser of
        Nothing ->
            div [] [ ... ]

        Just user ->
            div []
                [ userInfo user
                , userActivity user
                ]

就算把 type definition 寫錯

userCard : User -> Html Msg

寫成這樣也沒關係 因為從其它地方得到的 output 會是這邊的 input

然後其它地方得到的 output 一定是 Maybe User 而不是 User

所以 compiler 還是會檢查出來


也就是說 a 是一種 type

Maybe a 也是一種 type

在 type 描述上更強大完整了

  分享   共 467 次點閱
共有 0 則留言
還沒有人留言。歡迎分享您的觀點、或是疑問。
您的留言
尤川豪
445 貼文  ·  275 留言

Devs.tw 是讓工程師寫筆記、網誌的平台。隨手紀錄、寫作,方便日後搜尋!

歡迎您一起加入寫作與分享的行列!

查看所有文章