Types 如何让模块使用者在Elm中定义类型

Types 如何让模块使用者在Elm中定义类型,types,elm,Types,Elm,我在Elm项目中创建了一个表模块 每个列都有一个getter函数,该函数定义了它们如何从为行建模的记录中检索数据 因此,一行可能看起来像: { name = "bananas" , price = 5 } 这些列可以如下所示: [ { title = "Item Name" , get = .name } , { title = "Price in pennies" , get = .price >> (*) 100 >> toString } ] t

我在Elm项目中创建了一个表模块

每个列都有一个getter函数,该函数定义了它们如何从为行建模的记录中检索数据

因此,一行可能看起来像:

{ name = "bananas"
, price = 5
}
这些列可以如下所示:

[ { title = "Item Name"
  , get = .name
  }
, { title = "Price in pennies"
  , get = .price >> (*) 100 >> toString
  }
]
type alias Column a =
    { get : a -> String
    , title : String
    }

type alias Columns a =
    List (Column a)

viewTable : Columns a -> List a -> Html msg
这意味着列
get
函数的类型注释为:
行->字符串

我遇到的问题是,我想让这个表模块成为具有自己的“行”类型的其他项目的可重用组件。如何允许模块使用者指定行类型别名而不删除所有类型批注


我对Elm很陌生,因此如果我问题中的措辞不正确,很抱歉。

您可以引入类型变量(通常是
a
,但任何小写名称都可以,例如
中的data

然后,您可以创建如下内容:

[ { title = "Item Name"
  , get = .name
  }
, { title = "Price in pennies"
  , get = .price >> (*) 100 >> toString
  }
]
type alias Column a =
    { get : a -> String
    , title : String
    }

type alias Columns a =
    List (Column a)

viewTable : Columns a -> List a -> Html msg

您可以引入一个类型变量(通常是
a
),而不是使用自己的类型,
,但任何小写名称都可以,例如,
中的数据

然后,您可以创建如下内容:

[ { title = "Item Name"
  , get = .name
  }
, { title = "Price in pennies"
  , get = .price >> (*) 100 >> toString
  }
]
type alias Column a =
    { get : a -> String
    , title : String
    }

type alias Columns a =
    List (Column a)

viewTable : Columns a -> List a -> Html msg
看看哪一个为处理这个问题提供了一些抽象。有一个
类型,允许您为每种类型创建自定义配置,以构建渲染值。看看哪一个为处理这个问题提供了一些抽象。有一个
类型,允许您为每种类型创建自定义配置,以构建渲染值。