gpt4 book ai didi

programming-languages - 哪些编程语言允许您像运算符一样定义成对括号?

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

我正在寻找创建一个 DSL,我正在寻找一种语言,您可以在其中为 floor and ceiling functions 之类的东西定义自己的括号样式运算符。 .我宁愿不走为自定义语法定义自己的 Antlr 解析器的路线。

据我所知,我所知道的唯一允许您定义自定义运算符的语言都是二元中缀运算符。

tl; dr:哪些语言允许定义的配对符号(如左括号/右括号)运算符?

此外,如果没有人命名一种具有此功能的语言,并且标准非常具体且绝对在编程领域,我不认为这个问题会“太宽泛”。

最佳答案

由于 Fortress 已经死了,我所知道的唯一可以想象到这样的语言是 FORTH 遗产的语言。

在我所知道的所有其他人中,大括号、方括号和圆括号已经被大量使用,不能进一步重载。

我建议放弃对这些东西的追求并舒适地写作

floor x
ceiling y

或者功能应用程序以您选择的语言表示。

但是,在您引用的文章中,据说:Unicode 在 U+2308–U+230B 处包含这些符号的代码点:⌈x⌉、⌊x⌋。

因此,您至少可以在类似 Haskell 的语言中定义这个 a s 运算符并使用如下:
infix 5 ⌈⌉
(foo ⌈⌉)

我能想到的最好的方法如下:
--- how to make brackets
module Test where

import Prelude.Math

infix 7 `«`
infix 6 `»`

_ « x = Math.ceil x
(») = const

x = () «2.345» ()

main _ = println x

输出为:3.0
(这实际上不是 Haskell,而是 Frege,一种类似 Haskell 的 JVM 语言。)

请注意,我使用 «» 而不是 ⌈⌉,因为不知何故,我的 IDE 中没有可以正确显示括号符号的字体。 (这是不这样做的另一个原因。)

它的工作方式是使用 infix指令,我们将其解析为
 (»)  ((«) () 2.345)  ()

(可以插入任何表达式来代替 () )

也许如果您在 Haskell 小组中提问,就会有人找到更好的解决方案。

关于programming-languages - 哪些编程语言允许您像运算符一样定义成对括号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19982461/

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