如何命名物理上大写的 Haskell 变量

问题描述 投票:0回答:4

haskell 中的变量名需要小写,但是

如果我们想存储 g = 9.8 和 G = 6.67300 × 10-11 (在以下场景中),如何在 .hs 文件中声明变量?

传统物理学家提到:

(1) 地球重力加速度

g = 9.8 m/秒^2

(2) 万有引力常数

G = 6.67300 × 10-11 m3 kg-1 s-2

haskell naming-conventions
4个回答
12
投票

您只需要想出另一个名字即可。以大写字母和小写字母开头的名称之间的区别是语法的一部分。

虽然这对您来说可能是不幸的,但这是一种设计权衡。为了简化不同事物之间的区分(例如变量和构造函数之间),以小写字母开头的标识符和以大写字母开头的标识符本质上是不同的。


11
投票

您可以给它们起有意义的名字。仅仅因为数学家和物理学家历来喜欢使用高深莫测的符号,除了死记硬背之外无法解释它们,但这并不意味着你必须这样做。我们现在正在打字,而不是手写,所以用

earthGravity
gravitationalConstant
定义方程并不比用
g
G
更难写,而且这是一个地狱。更容易阅读!

或者,您可以指定所有以

c
为前缀的标识符表示标准众所周知的常量,并使用
cg
cG


3
投票

我会简单地使用

g
_G
。我认为下划线不会太分散注意力。


0
投票

另一个选项可以使用 ghc 的

-XOverloadedLabels
,它允许您使用任何以
#
为前缀的字符串,如下所示:

instance IsLabel "G" Float where
  fromLabel = 6.673...

-- then use like
force m1 m2 r = (#G * m1 * m2)/(r^2)

尽管只是采用像在常量前添加

c
这样的约定可以减少对扩展的滥用。

© www.soinside.com 2019 - 2024. All rights reserved.