Smalltalk-80 字符含义/用法

问题描述

这些字符←、≡、¬、≠、⌾、的确切含义是什么?在Smalltalk-80中如何使用?

考虑以下表达式:(取自 smalltalk-80 源代码

  1. ^self class ≡ x ≡ false
  2. ^mem ◦ ¬448 ≠ 0
  3. strm frame ← 15000 ⌾ frame origin y rect: 20000 ⌾ frame corner y.
  4. neg ← (aStream ∢ 45 "-" ifTrue: [true] ifFalse: [aStream ∢ 21 "**¬**"]).

注意:此示例摘自以下链接中的原始 Xerox Alto 磁盘:http://bitsavers.trailing-edge.com/bits/Xerox/Alto/disk_images/

解决方法

听起来像是来自施乐内部版本的 Smalltalk-80 的源文件。对于公开发布,他们必须用 ASCII 替换这些“不寻常的”字符(需要自定义字体字形),只保留 plugins: [ eslint({ include: '**/*.js',throwOnError: true,}),babel({ babelHelpers: 'bundled',exclude: 'node_modules/**',resolve({ browser: true,styles({ modules: true,] _ 字形ASCII 字符。

这是根据我使用 St76/78 的经验得出的最佳猜测(更新:Dan Ingalls 确认):

  1. ^ 赋值,如 。在 St80 也一样。

  2. var ← objectrcvr word← arg 的替代,通常表示分配给接收者的一个时隙(例如 word: 中的 x←)。 St80 只允许以冒号 point x ← 100 结尾的关键字。

    解析器将 : 视为较低的优先级,因此您可以在其两侧都有关键字表达式。例如

    将评估 a foo: b ← c bar: d 并将结果作为第二个参数传递给 a 的 c bar: d 方法)。

  3. foo:← 索引如 。 St80 使用 array◦index 代替。

  4. at: 相当于 St80 的 ◦←,如 at:put:

  5. array◦index ← value 身份,如 St80 的

  6. == 文字表示负数,如 ¬ 表示 -1。解析器将 ¬1 视为二进制消息选择器,因此必须将另一个符号用于负数文字。

  7. - 不相等,就像 St80 的

  8. ~= 不完全相同,就像 St80 的

  9. ~~ 创建一个 Point,就像 St80 的

  10. @ 匹配来自流的令牌。如果从流中读取的下一个标记与参数匹配,则使用并返回它。否则它会回答

有关详细信息,请访问 Smalltalk Zoo 网站。