是否可以将 Maybe 与可扩展记录一起使用?

Is it possible to use Maybe with Extensible Records?

我正在尝试编写一个函数来从可扩展记录列表中提取可能,我想知道这是否可行。源码在下面,或者看Ellie link here

module Temp exposing (..)

import Html exposing (text)


main =
    text "Hello"


items : Maybe List { data | id : Int } -> List { data | id : Int }
items maybeList =
    case maybeList of
        Just t ->
            t

        Nothing ->
            []

Maybe List { data | id : Int } 解析为 Maybe (List) ({ data | id : Int })。我不确定为什么错误消息如此具有误导性,但解决方法是将 List ... 包装在 () 中,如下所示:

items : Maybe (List { data | id : Int }) -> List { data | id : Int }
              ^                        ^

编辑:另外,您的函数可以使用 Maybe.withDefault:

进行简化
items = Maybe.withDefault []