有没有一种编程语言没有控制结构或运算符?

9

喜欢Smalltalk或Lisp吗?

编辑

控制结构类似于:

     Java                 Python               
 if( condition ) {     if cond:           
     doSomething           doSomething     
 }                                         

或者

     Java                Python                  
 while( true )  {        while True:            
     print("Hello");        print "Hello"      
 }                                            

逻辑运算符

 Java, Python
 1 + 2  // + operator 
 2 * 5  // * op

在 Smalltalk 中(如果我没记错),应该是这样的:
condition ifTrue:[
   doSomething
]

True whileTrue:[
   "Hello" print 
]
1 + 2 // + is a method of 1 and the parameter is 2 like 1.add(2) 
2 * 5 // same thing

2
请定义“运算符”(和“控制结构”)。 - kennytm
2
你的问题加上第一句话是:“除了这个完全符合这些标准的东西,还有没有其他符合这些标准的东西吗?” - Chris Lutz
18个回答

7
为什么你以前从未听说过Lisp?

3
根据提问者的具体需求而定。(if exp1 exp2 exp3)(+ exp1 exp2) 当然是我所说的控制结构和运算符(因为在许多情况下,控制结构和运算符只是函数的另一个名称)。使用Church数和λ演算可能是最接近提问者所需(可能)的东西。 - Svend
我有一个问题,但我不知道 (+ 1 2) 中的 + 是函数还是语言内置运算符。根据Svend的评论,我认为它们是常规函数,我已经更新了问题以表明我的意思(在Smalltalk中)。 - OscarRyz
1
@Oscar:在Common Lisp中,有一小部分特殊形式,它们是语言中无法完成的基本操作,例如if。其他所有内容都是由函数直接或通过宏构建的。然而,我认为if是一种控制结构。 - David Thornley

7

你的意思是没有特殊的语法来实现相同的功能吗?

很多编程语言都有控制结构和运算符,它们“实际上”是某种形式的消息传递或函数调用系统,可以重新定义。大多数“纯”面向对象语言和纯函数式语言都符合这一点。但它们仍然会有你的“+”和某种形式的代码块——包括SmallTalk!因此,你的问题有点误导性。


6

4
纯 lambda 演算?下面是整个语言的语法: ```html

纯lambda演算?以下是整个语言的语法:

```
e ::= x | e1 e2 | \x . e

你所拥有的只有变量、函数应用和函数创建。它在功能上等同于图灵机。已知一些编码(通常为“Church编码”)可以实现以下构造:
  • 如果-那么-否则
  • 当-执行
  • 递归
还可以实现以下数据类型:
  • 布尔值
  • 整数
  • 记录
  • 列表、树和其他递归类型
在λ演算中编码是非常有趣的——我们的学生将在明年春季的本科语言课程中进行此项工作。

4

Prolog*

*我不对您因尝试理解这项技术而产生的任何沮丧和/或头痛负责,也不对您由于上述情况造成的任何损害负责,包括但不限于损坏键盘、屏幕破损以及桌子上留下头形凹痕。


+1 哈哈哈,我曾经接近一本Prolog手册,然后我想...嗯,也许明天吧。 - OscarRyz
@Oscar,仅仅是维基百科页面就吓到我了。 - Earlz
看到那些同时学习Prolog和vi的新手,尝试掌握两者的过程是非常有趣的。 - Mike Sherrill 'Cat Recall'

3
Forth可能会符合条件,具体取决于您对“没有控制结构或运算符”是什么意思。Forth可能看起来有它们,但实际上它们只是符号,程序员可以定义(或重新定义)“控制结构”和“运算符”。

2
关于Logo,或者更具体地说,海龟绘图呢?我相信我们都记得,PEN UP(笔抬起)、PEN DOWN(笔放下)、FORWARD 10(向前走10步)等等。

我在这个(或类似的)东西上编写了我人生中第一个真正的程序 :) - Callum Rogers
据我所知,Logo是LISP的一个方言。 - rmeador
@SLC:从你的链接中可以看到,“Logo提供了几种常见的控制结构”。因此,我认为Logo不符合没有控制结构的标准。 - Gabe
@Gabe 这取决于版本,大多数人用于海龟绘图的版本只是执行一系列绘图指令的列表。 - NibblyPig

2

1
它们不是结构,而是命令。否则,原帖中的闲聊示例将无效。 - Matt Ellen

2

2
在Tcl中,没有控制结构;只有命令,而且它们都可以被重新定义。每一个都可以。也没有运算符。除了表达式中的运算符,但那实际上只是一种导入的外来语法,不是语言本身的一部分。(我们还可以导入完整的CFortran或几乎任何其他东西。)

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