gpt4 book ai didi

purescript - Purescript 中的新类型是否可能存在约束?

转载 作者:行者123 更新时间:2023-12-03 16:42:57 27 4
gpt4 key购买 nike

是否可以对 Purescript 中的类型构造函数施加某些限制?例如:

newtype Name = Name String
-- where length of String is > 5

最佳答案

正如在另一个答案中提到的,你需要一些更高级的类型系统才能像那样编码它,所以通常实现你想要的方法是为 newtype 提供一个“智能构造函数”然后不导出构造函数本身,这样人们将只能使用您想要的属性构造 newtype 的值:

module Names (runName, name) where

import Prelude
import Data.Maybe (Maybe(..))
import Data.String (length)

newtype Name = Name String

-- No way to pattern match when the constructor is not exported,
-- so need to provide something to extract the value too
runName :: Name -> String
runName (Name s) = s

name :: String -> Maybe Name
name s =
if length s > 5
then Just (Name s)
else Nothing

关于purescript - Purescript 中的新类型是否可能存在约束?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34569910/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com