Nur*_*yev 2 immutability elm ghcjs purescript
我认为埋没到列出的语言源代码对我来说太过分了.但有没有人能够用简单的术语解释事情是如何发生的?
我的意思是,最终不可变数据仍将是javascript的数据.或者编译代码包含非std数据结构,例如用于不可变数组的'a,b,c'字符串
我会回答有关PureScript的问题,因为我对这种语言比较熟悉.
从PureScript By Example [2.7]关于PureScript到JavaScript的生成:
- 每个模块都变成一个对象,由包装函数创建,包含模块的导出成员.
- PureScript尝试尽可能保留变量的名称.
- PureScript中的函数应用程序在JavaScript中变为函数应用程序.
- main方法在定义所有模块后运行,并作为不带参数的简单方法调用生成.
- PureScript代码不依赖于任何运行时库.编译器生成的所有代码都源自您的代码所依赖的PureScript模块.
这些要点很重要,因为它们意味着PureScript生成简单易懂的代码.实际上,代码生成过程通常是一个非常浅薄的转换.对于预测为特定输入生成哪些JavaScript代码,对语言的理解相对较少.
因此,你写的是:"最终不可变数据仍将是一个javascript的数据".在编译之后,PureScript模块的包装函数可以保证更高级别的不变性.