gpt4 book ai didi

types - Mathematica 是一种无类型语言吗?

转载 作者:行者123 更新时间:2023-12-03 15:15:29 24 4
gpt4 key购买 nike

与大多数编程语言不同,Mathematica 中的每个值都是一个表达式。将任何操作应用于任何表达式总是会产生另一个表达式。因此,Mathematica 实际上只有一种类型。 Mathematica 不做静态类型检查,甚至可以说,甚至不动态检查类型(在运行时)。

例如,添加整数表达式 1到字符串表达式 "foo"在 Mathematica 中产生(无意义的)表达式 1 + "foo"但没有错误。在其他情况下,Mathematica 提供有关无意义输入的反馈,但生成此反馈的检查必须由程序员明确执行。

因此,将 Mathematica 描述为无类型语言而不是静态或动态类型语言是否公平?

最佳答案

Mathematica 所拥有的不是“类型”,而是“头部”的概念,任何 Mathematica 表达式都具有一个。这符合他们的"everything is an expression" paradigm .

可以通过函数 FullForm[] 查看 Mathematica 表达式的结构。和 Head[] .例如,Head[3]返回 Integer , Head[2/3]返回 Rational , Head[I]返回 Complex , Head[.3]返回 Real , Head[a]返回 Symbol (假设您尚未将任何内容分配给 a ),Head["a"]返回 String , Head[{2}]返回 List ...我相信你已经明白了。

这样做的好处是可以编写函数,使其只能接受具有特定头部的参数。例如:

f[x_Real] := x^2

f[3]
f[3]

f[3.]
9.

discussion on patterns 应该为您提供有关如何设置功能的想法,以便它们仅适用于具有特定头部或一组头部的对象。

关于types - Mathematica 是一种无类型语言吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4558732/

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