Re[7]: Какой бы синтаксис выбрать для атомов?
От: Mr.Cat  
Дата: 14.02.09 16:00
Оценка:
Здравствуйте, netch80, Вы писали:
N>Переведите, пожалуйста.

Полагаю, имеется в виду, что атом может быть значением переменной.
Re[8]: Какой бы синтаксис выбрать для атомов?
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 14.02.09 17:18
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Здравствуйте, netch80, Вы писали:

N>>Переведите, пожалуйста.

MC>Полагаю, имеется в виду, что атом может быть значением переменной.


Ну так и число может быть значением переменной... думаю, тут что-то иное.
The God is real, unless declared integer.
Re[2]: Какой бы синтаксис выбрать для атомов?
От: vdimas Россия  
Дата: 17.02.09 10:44
Оценка:
Здравствуйте, x-code, Вы писали:


XC>Если я правильно понимаю — атом во всех этих языках это что-то вроде именованной константы или элемента перечисления?


Это то, что не вычисляется, а представляется самим собой.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[9]: Какой бы синтаксис выбрать для атомов?
От: MasterZiv СССР  
Дата: 17.02.09 15:22
Оценка:
netch80 пишет:

> Ну так и число может быть значением переменной... думаю, тут что-то иное.

Так число — тоже атом. Ну, конечно в некоторых языках.
Posted via RSDN NNTP Server 2.1 beta
Re[3]: Что такое атомы?
От: x-code  
Дата: 17.02.09 17:16
Оценка:
Здравствуйте, vdimas, Вы писали:

V>Это то, что не вычисляется, а представляется самим собой.


Интересно... я здесь первый раз узнал об атомах Википедия молчит, даже английская (или они там по-другому называются? хотя вряд-ли...)
Можно еще один вопрос.
Если, допустим, ` — символ атома, то получается, что `(x+y) — тоже атом?
Практический вопрос — как такой атом можно на практике использовать в некотором языке программирования, поддерживающем ФП?
Re[4]: Что такое атомы?
От: vdimas Россия  
Дата: 17.02.09 17:46
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Если, допустим, ` — символ атома, то получается, что `(x+y) — тоже атом?


Да, т.е. это выражение не вычисляется, а запоминается в исходном виде.

XC>Практический вопрос — как такой атом можно на практике использовать в некотором языке программирования, поддерживающем ФП?


Если язык компиллируемый, то атом — это константа или любое значение любого типа, т.е. на практике — бесполезен для таких языков, ибо в момент компиляции известно, что есть выражение, а что — значение.
... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[4]: Что такое атомы?
От: z00n  
Дата: 17.02.09 21:59
Оценка:
Здравствуйте, x-code, Вы писали:

XC>Интересно... я здесь первый раз узнал об атомах Википедия молчит, даже английская (или они там по-другому называются? хотя вряд-ли...)

Там просто нет отдельной статьи:
http://en.wikipedia.org/wiki/Lisp_programming_language#Atoms
http://www.gnu.org/software/emacs/emacs-lisp-intro/html_node/Lisp-Atoms.html
Хотя топикстартер имел в виду скорее атомы из пролога(или Erlang), которые аналог лисповых symbols(которые тоже атомы).
http://en.wikipedia.org/wiki/Prolog
http://erlang.org/doc/reference_manual/data_types.html
Re: Какой бы синтаксис выбрать для атомов?
От: Кодт Россия  
Дата: 19.02.09 17:41
Оценка:
Здравствуйте, dmz, Вы писали:

dmz>Какой подход для вас наименее раздражающий? Меня тут все раздражает — в лиспе кракозябра, в руби — двоеточие, которое в других языках используется совсем по-другому, так что я долго не мог въехать, что это в руби вообще такое. В Окамле — кракозябра, в Эрланге — то, что идентификаторы должны быть с заглавной буквы.


В Эрланге и Прологе атомы — с маленькой буквы. С большой буквы — имена переменных. Имена функций являются атомами, другое дело, что не каждому атому соответствует функция

Если это вписывается в твою идеологию, то сделай как в Эрланге, и тогда придётся как-то обособлять имена переменных (начинать с Другого регистра, предварять знаком $ и т.п.)
Кстати, можно считать, что $ — это операция получения переменной, ассоциированной с атомом.
$x = 123;
$y = x;
$$y += 1; # получилось 124


Если же атомы должны быть отдельными сущностями, то обособлять придётся их.

dmz> Так что в итоге я не знаю, как лучше сделать. Есть соображения, как лучше?


Предлагаю использовать @ — ATom

@hello — атом, связанный с литералом "hello"
atom("hello") == @hello — атом, связанный со строкой-аргументом.
str(@hello) == "hello" — строка, связанная с атомом
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[8]: Какой бы синтаксис выбрать для атомов?
От: vdimas Россия  
Дата: 19.02.09 23:26
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Так это в каком языке смотря.


MZ>(list a b c d) — a b c d — переменные. list — кстати, функция,

MZ>а тоже атом.

переменная — не атом, хотя может иметь значение атома.
Re[10]: Какой бы синтаксис выбрать для атомов?
От: vdimas Россия  
Дата: 19.02.09 23:41
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Ну так и число может быть значением переменной... думаю, тут что-то иное.

MZ>Так число — тоже атом. Ну, конечно в некоторых языках.

Само понятие изначально возникло из-за требований уникальности ввиду ограниченных ресурсов, но прижилось, ввиду эффективного сравнения (т.к. строки сравнивались не по содержимому, а по адресу).

Для чисел в Лисп это тоже относилось, т.к. чтобы не создавать каждый раз динамически числа в памяти, некоторый их диапазон создавался и кешировался при старте системы, а затем, при парсинге, если число попадало в кешированный диапазон, то бралась ссылка на уже имеющийся готовый объект, вместо создания нового. От того, в некотором диапазоне числа были автоматически атомами.
Re[10]: Какой бы синтаксис выбрать для атомов?
От: vdimas Россия  
Дата: 19.02.09 23:47
Оценка:
Здравствуйте, MasterZiv, Вы писали:

>> Ну так и число может быть значением переменной... думаю, тут что-то иное.

MZ>Так число — тоже атом. Ну, конечно в некоторых языках.

Само понятие изначально возникло из-за требований уникальности ввиду ограниченных ресурсов, но прижилось, ввиду эффективного сравнения (т.к. строки сравнивались не по содержимому, а по адресу).

Для чисел в Лисп это тоже относилось, т.к. чтобы не создавать каждый раз динамически числа в памяти, некоторый их диапазон создавался и кешировался при старте системы (0..255 во многих системах), а затем, при парсинге или вычислениях, если число попадало в кешированный диапазон, то бралась ссылка на уже имеющийся готовый объект, вместо создания нового. От того, в некотором диапазоне числа были автоматически атомами.
Re[9]: Какой бы синтаксис выбрать для атомов?
От: MasterZiv СССР  
Дата: 22.02.09 09:39
Оценка:
vdimas пишет:

> переменная — не атом, хотя может иметь значение атома.

смотря где, в каком языке.
Posted via RSDN NNTP Server 2.1 beta
Re[11]: Какой бы синтаксис выбрать для атомов?
От: MasterZiv СССР  
Дата: 22.02.09 09:43
Оценка:
vdimas пишет:

> Само понятие изначально возникло из-за требований уникальности ввиду

> ограниченных ресурсов, но прижилось, ввиду эффективного сравнения (т.к.
> строки сравнивались не по содержимому, а по адресу).
>

Господа, не путаем атомы и символы. Символ — частный случай атома.

> Для чисел в Лисп это тоже относилось, т.к. чтобы не создавать каждый раз

> динамически числа в памяти, некоторый их диапазон создавался и
> кешировался при старте системы, а затем, при парсинге, если число
> попадало в кешированный диапазон, то бралась ссылка на уже имеющийся
> готовый объект, вместо создания нового. От того, в некотором диапазоне
> числа были автоматически атомами.

В лиспе всё, что не список — атом. Даже вектор ( #(a s d) ).

CL-USER> (atom 1234)
T
CL-USER> (setf asd 'asd)
ASD
CL-USER> (atom asd)
T
CL-USER> (atom #(a s d f))
T
CL-USER> (atom '(a s d f))
NIL
Posted via RSDN NNTP Server 2.1 beta
Re[12]: Какой бы синтаксис выбрать для атомов?
От: vdimas Россия  
Дата: 24.02.09 11:21
Оценка:
Здравствуйте, MasterZiv, Вы писали:

MZ>Господа, не путаем атомы и символы. Символ — частный случай атома.


Никто и не путает.
Речь о том, что значит понятие атом. Изначально атом — это был просто неделимый объект (да, всё что не список в Лиспе), но потом к нему прибавилась "окраска" уникальности, и использовался этот термин именно с этой окраской, напр. в API Windows. Откуда взялась эта окраска — сказал в пред. посте.
Еще одна окраска в том, что атомы — не вычисляются, а представляются самими собой. Напр., аргументы ф-ий, их тела, а так же глобальные и локальные переменные в Лиспе преставляли из себя объекты-списки (т.е. реализованы на тех же списках), которые вычислялись системой перед подачей в кач-ве аргументов ф-ий (apply), атомы — единственные не вычислялись.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.