programming-languages - 联合类型和交集类型

标签 programming-languages functional-programming type-systems

联合类型和交集类型的各种用例是什么?最近有很多关于这些类型系统功能的讨论,但不知何故,我从来没有觉得需要这些!

最佳答案

例如,使用联合类型可以描述 json 域模型,而无需引入实际的新类,而只使用类型别名。

type JObject = Map[String, JValue]
type JArray = List[JValue]
type JValue = String | Number | Bool | Null | JObject | JArray
type Json = JObject | JArray

def stringify(json: JValue): String = json match {
    case String | Number | Bool | Null => json.toString()
    case JObject => "{" + json.map(x y => x + ": " + stringify(y)).mkStr(", ") + "}"
    case JArray => "[" + json.map(stringify).mkStr(", ") + "]"
}

关于programming-languages - 联合类型和交集类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653678/

相关文章:

c# - RAD 编程语言编写一个 windows 应用程序来显示文本、播放音频文件和显示弹出气球

haskell - Haskell 中的递归循环

c - C 中类似 Haskell 的类型系统

haskell - 用手或心算出函数组合的类型

performance - 解释语言: The higher-level the faster?

programming-languages - Windows 8 metro/winRT 中的新 JIT 编程语言是否可行?

perl - 我可以使用 awk 做什么而在 Perl 中无法做到?

haskell - FP 对表达式的操作

functional-programming - 仅在 fa() 成功时调用 fb() 的最惯用方法

就类型安全而言,Haskell 类型与 newtype