Какой язык программирования основан на хэше / карте? - PullRequest
2 голосов
/ 27 апреля 2010

Так же, как lisp часто считается языком программирования на основе списка, какие языки считаются основанными на карте?

Я помню, как читал об этом несколько лет назад, но больше не могу найти ссылку на него. Это выглядело примерно так:

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

редактировать: и более того, где цитируются кодовые блоки, которые будут оценены условно. Таким образом, если / cond и другие не будут иметь особую форму, как в lisp / схема.

Предполагается, что приведенный выше синтаксис должен быть картой / словарем, как и синтаксис lisp в виде списка.

if будет ключом со значением test.

тогда будет ключ со значением.

...

Ответы [ 6 ]

6 голосов
/ 27 апреля 2010

Это очень похоже на MISC , ленивый Лисп с картами вместо списков в качестве основного типа данных. (Он также ленивый, имеет глубокую интеграцию метаданных (аналогично Clojure) и пару других вещей, но это все еще в значительной степени Лисп: функциональные, гомоиконические, макросы, реализованные в виде метациркуляционного интерпретатора, все хорошие вещи) 1003 *

Вот несколько примеров кода из блога :

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

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

[take 20 [numbers from:0]]

К сожалению, похоже, что, кроме двух блогов статей давно, здесь не так много.

4 голосов
/ 27 апреля 2010

Я бы тоже предложил Луа. Весь язык основан на таблицах - объекты - это таблицы, их определения - таблицы, переменные - в таблицах, таблицы определяют область видимости и т. Д. И т. Д., Где таблица представляет собой хэш-карту.

3 голосов
/ 27 апреля 2010

Очевидным ответом будет lua - он интенсивно использует table s, а таблица - это в значительной степени хэш-карта (ассоциативный массив). Его синтаксис выглядит не так, как вы показали выше.

То, что у вас есть выше, во многом похоже на Smalltalk, который, безусловно, включает в себя хеш-контейнеры в своей библиотеке, и типичная реализация использует хеш-таблицы для поиска ответа объекта на конкретное сообщение. Тем не менее, называть его «основанным на хэше / карте» кажется, по крайней мере, немного натянутым, по крайней мере, мне.

2 голосов
/ 27 апреля 2010

Язык программирования MUMPS имеет один базовый тип данных, который по сути представляет собой хэш / карту, но будьте внимательны при изучении MUMPS. Там будут драконы ...

2 голосов
/ 27 апреля 2010

Разбитый вами пост очень похож на Objective-C, хотя он не основан на реализации, только синтаксис выглядит так.

Один язык, который, по моему пониманию, интенсивно использует словари, - это Python. В основном Python (по моим собственным словам) - очень большой словарь, но синтаксис не совсем это отражает.

Это мой источник (возможно, из-за путаницы)

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

1 голос
/ 27 апреля 2010

Это не совсем то, что вы описываете, и оно не основано на хэше, но ваш пример очень похож на Smalltalk :

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

Обновление:

Ваше редактирование, "и многое другое, где цитируются блоки кода, которые будут оценены по условию. Таким образом, если / cond и другие не будут иметь специальную форму, как они представлены в lisp / схема", предлагает мне Tcl .

В Tcl {} просто цитирует строку. «Если» - это команда, которая оценивает тест, а затем выборочно оценивает другой параметр на основе этого результата.

Я бы точно не назвал Tcl языком, основанным на хешах, хотя хеши в Tcl особенные.

...