2010-04-27 59 views
2

很像lisp通常被认为是基于列表的编程语言哪些语言被认为是基于地图的?存在什么基于哈希/地图的编程语言?

我记得几年前就读过一篇文章,但不能再找到它的参考。它看起来是这样的:

[if:test then:<code> else:<more code>] 

编辑: 多,其中引述的代码块是有条件的评价。以这种方式,如果/ cond和其他人不会是特殊形式,因为他们在lisp/scheme中。

上面的语法应该是像地图/字典一样,就像lisp的语法是列表一样。

如果将是测试值的关键。

然后将是一个关键的值。

...

+0

请定义基于地图。 – zaf 2010-04-27 16:23:25

+0

@zaf基于关联数组的语言能让事情变得更清晰吗? – Davorak 2010-04-27 16:35:05

+0

在Common Lisp中,至少COND(像很多控制流构造一样)并不是一种特殊的形式:它是一个宏。 – Ken 2010-04-27 17:26:12

回答

6

这看起来非常像MISC,一个懒惰的Lisp与地图,而不是列表作为基本的数据类型。 (它也很懒,元数据(类似于Clojure)和其他一些东西的深度整合,但它仍然是一个Lisp:功能性,同形,宏,作为元环解释器实现,所有的好东西。)

下面是来自blog一些代码示例:

[if [> 5 10] then:[+ 5 10] else:[- 5 10]] 

[let '[square:[lambda '[x:1] '[* x x]]] 
    '[square 12] 
] 

[take 20 [numbers from:0]] 

遗憾的是,似乎除了2 blogarticles从很久以前,有没有什么事情了。

+0

是的!谢谢。那正是我正在寻找的。我不认为已经有很多事情发生了,但它激起了我的兴趣,我想再次执行实施,但前段时间丢失了我的副本。 – Davorak 2010-04-27 19:42:35

+0

+1Jörg很好的发现。它有'Fraction'类型吗? :P:P只是在开玩笑,我不知道它会是什么样子。 http://stackoverflow.com/questions/2702450/implement-a-simple-class-in-your-favorite-language – OscarRyz 2010-04-27 20:10:43

3

答案显然是卢阿 - 它使用table小号严重,和一张桌子几乎是一个哈希表(关联数组)。它的语法看起来不像你上面显示的那样。

上面的代码看起来很像Smalltalk,它肯定会在其库中包含基于散列的容器,而典型的实现在内部使用散列表来查找对象应该如何响应特定的消息。尽管如此,把它称为“基于散列/地图”看起来有点像一点点,至少对我来说。

+0

谢谢我会看看lua 。代码示例不是小问题,它看起来像一种实验语言,是创作者的个人项目。 – Davorak 2010-04-27 16:43:25

1

它并不完全符合你的描述,它不是真正的基于散列的,但你的例子看起来很像Smalltalk

test 
    ifTrue: [code] 
    ifFalse: [more code] 

更新:

你的编辑,“更这里提到的代码如果/ cond和其他人不是特殊形式,就像他们在lisp/scheme中那样“,对我来说暗示Tcl

在Tcl中,{}简单地引用一个字符串。 “如果”是评估测试的命令,然后根据该结果有选择地评估另一个参数。

我不会完全调用Tcl基于哈希的语言,尽管哈希值在Tcl中很特别。

+0

谢谢。是的杰瑞棺材提到了这种可能性。我编辑我的问题并不是小问题,而是添加了一些我记得的细节。 – Davorak 2010-04-27 16:45:37

+0

@Davorak重新编辑你的问题,它们也不是Smalltalk中的特殊形式。实际上,Smalltalk并没有真正的特殊形式,只是消息。你所问的语言对我而言与ST非常接近。 – 2010-04-27 17:31:22

+0

是的,但语法基于消息传递,而不是基于地图/字典。虽然我真的应该花一些时间学习smalltalk。 – Davorak 2010-04-27 19:41:10

4

我也建议Lua。整个语言基于表格 - 对象是表格,它们的定义是表格,变量在表格中,表格定义范围等等 - 表格是散列表。

+0

是的,我会按照建议检查它,但是我正在寻找语法,其中的语法是基于地图/字典的结构,就像lisp有一个像结构一样的列表。 – Davorak 2010-04-27 19:36:29

2

被剪掉的帖子看起来很像Objective-C,虽然在实现中不是基于map,但只有语法看起来像那样。

根据我的理解,大量使用字典的语言是Python。基本上Python(用我自己的话来说)是一个非常大的字典,但是它的语法并没有完全反映出来。

这是我的源(可能是混乱的,虽然)

http://code.google.com/edu/languages/index.html#_python_understanding

+0

谢谢。它不是python或objective-c。 Python虽然有字典,但语言并不基于它们。我所指的语言的语法就像lisp的列表一样。 – Davorak 2010-04-27 19:28:56

2

MUMPS编程语言有一个基本数据类型基本上是一个哈希/地图,但是大约腮腺炎仔细学习。有龙...

+0

谢谢,虽然我不认为我很快就会花时间学习腮腺炎。我没有看到浏览wiki页面的明显优势。我想到的语言是在过去的十年中创建的,我认为它并没有被大量使用。 – Davorak 2010-04-27 19:35:14

+0

MUMPS的数据库组织值得了解。 (有龙,但是他们保守着很大的秘密。) – ern0 2010-09-13 10:45:04