“标准化”是什么意思,为什么Haskell是标准化的?

7
维基百科声称Haskell是“标准化”的,但Haskell标准并未得到诸如ISO这样的国际公认标准机构或BSI或ANSI等国家机构的批准。

那么,将编程语言标记为“标准化”的标准真正是什么?它只需要在某个网站上发布规范吗?

5
这是一个非常好的问题,但你应该在http://programmers.stackexchange.com上提问。那个网站正好涉及这个主题。 - Paul Turner
6
我认为这里的意思是以非正式的方式指的是它是由委员会设计,并且通过在委员会成员之间达成设计问题的共识来确定,并由一个独立于特定实现的文档规定。即使标准尚未批准,它仍然是一个标准。您可以使用它来确定给定实现的符合程度。 - kosmikus
1个回答

6
你已经回答了自己的问题。标准化语言是指由某些规范定义的语言,这些规范可以是文件,也可以是一个已被标准化和正式化的语言(例如SML)的“参考实现”。哪个机构承认或批准该标准并不是真正的问题。
这与一种实现定义语言相对应,例如Perl或PHP,其中语言的操作方式仅由语言的某些特定“旗舰”实现的操作方式定义。
因此,我们可以说某个C编译器实际上没有正确地编译C,因为它不遵守标准。同时,我们不能说CPython不能正确地解释Python,因为根据定义,它所做的就是Python所做的。
Haskell由Haskell报告定义,其最新版本是Haskell 2010:http://www.haskell.org/onlinereport/haskell2010/ 该报告由委员会制定、投票和批准。此外,历史上有多个Haskell编译器和解释器符合报告,或者几乎符合报告,并带有记录的例外情况。
按照标准编写的代码应该在编译器之间可移植,当编译器和报告之间出现分歧(除了“预期”的分歧)时,通常会将编译器或报告更改为符合规范。

2
我不同意仅凭参考实现就足以被视为标准化。规范是必要的,以便实现互操作性。 - singpolyma
1
我认为这取决于情况。我真的反复权衡过这个问题,例如(ECMAScript 4)的(已废弃)参考实现是用SML完成的。就像不是每个文档都是规范一样,也不是每个实现都是符合标准的参考实现。但如果做得好,我认为这可能是一种更优越的方法。例如,请参见此讨论:http://lambda-the-ultimate.org/node/1784 - sclv

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接