当前位置:  开发笔记 > 编程语言 > 正文

Purescript中新类型的约束是否可行?

如何解决《Purescript中新类型的约束是否可行?》经验,为你挑选了1个好方法。



1> gb...:

正如在另一个答案中所提到的,你需要一些更高级的类型系统才能对它进行编码,所以通常实现你想要的方法是为它提供一个"智能构造函数" 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

推荐阅读
Gbom2402851125
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有