Автор |
Сообщение |
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): Короче, совершенно непоследовательная система. В одном месте запутано в угоду совместимости, в другом запутано без оглядки на совместимость...
Да, стандарт F93 рождался в результате борьбы нескольких реализаций и представляет собой компромисс, который никого не удовлетворил.
[quote="WingLion"] Короче, совершенно непоследовательная система. В одном месте запутано в угоду совместимости, в другом запутано без оглядки на совместимость... :shock:[/quote]
Да, стандарт F93 рождался в результате борьбы нескольких реализаций и представляет собой компромисс, который никого не удовлетворил.
|
|
|
|
Добавлено: Пт май 04, 2007 22:35 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
in4 писал(а): Значит, надо сделать нормально и написать слой совместимости через этот кривой набор...
Особой кривости не видно. Работать можно.
[quote="in4"]Значит, надо сделать нормально и написать слой совместимости через этот кривой набор... [/quote]
Особой кривости не видно. Работать можно.
|
|
|
|
Добавлено: Чт мар 22, 2007 11:05 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Значит, надо сделать нормально и написать слой совместимости через этот кривой набор...
Значит, надо сделать нормально и написать слой совместимости через этот кривой набор... ;)
|
|
|
|
Добавлено: Чт мар 22, 2007 00:21 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
profiT писал(а): PS. Опоздал... chess писал(а): PS: не успел.
Короче, совершенно непоследовательная система.
В одном месте запутано в угоду совместимости,
в другом запутано без оглядки на совместимость...
[quote="profiT"]PS. Опоздал...[/quote] [quote="chess"]PS: не успел.[/quote]
:)) :)) :)) :))
Короче, совершенно непоследовательная система.
В одном месте запутано в угоду совместимости,
в другом запутано без оглядки на совместимость... :shock:
|
|
|
|
Добавлено: Ср мар 21, 2007 17:19 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
profiT писал(а): А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского:
В форте можно сделать так и для стека. Пример для константы которая "заменяет" верхний элемент на стеке.
Код: CODE _NEW-CONSTANT-CODE POP EAX MOV EAX, [EAX] RET END-CODE
: NEW-CONST ( x "<spaces>name" -- ) HEADER ['] _NEW-CONSTANT-CODE COMPILE, , ; 5 NEW-CONST FIVE И теперь ( 1 2 3 ) FIVE ( 1 2 5 )
[quote="profiT"]А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского: [/quote]
В форте можно сделать так и для стека. Пример для константы которая "заменяет" верхний элемент на стеке.
[code]CODE _NEW-CONSTANT-CODE POP EAX MOV EAX, [EAX] RET END-CODE
: NEW-CONST ( x "<spaces>name" -- ) HEADER ['] _NEW-CONSTANT-CODE COMPILE, , ; 5 NEW-CONST FIVE И теперь ( 1 2 3 ) FIVE ( 1 2 5 ) [/code]
|
|
|
|
Добавлено: Ср мар 21, 2007 17:17 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): Осталось разобраться, а какое же слово глубину уменьшает? И что станет, если глубина окажется нулем?
Глубина поиска уменьшается на 1 словом PREVIOUS, которое первый в списке поиска словарь удаляет из списка после чего первым в списке поиска становится бывший вторым словарь.
Если список поиска перед выполнением PREVIOUS пуст, то возникает неопределенная ситуация(а мало-ли таких ситуаций может в Форте возникать).
PS: не успел.
[quote="WingLion"]Осталось разобраться, а какое же слово глубину уменьшает? И что станет, если глубина окажется нулем?[/quote]
Глубина поиска уменьшается на 1 словом PREVIOUS, которое первый в списке поиска словарь удаляет из списка после чего первым в списке поиска становится бывший вторым словарь.
Если список поиска перед выполнением PREVIOUS пуст, то возникает неопределенная ситуация(а мало-ли таких ситуаций может в Форте возникать). :weep;
PS: не успел.
|
|
|
|
Добавлено: Ср мар 21, 2007 16:51 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
WingLion писал(а): Осталось разобраться, а какое же слово глубину уменьшает?
PREVIOUS.
[quote="WingLion"]Осталось разобраться, а какое же слово глубину уменьшает?[/quote]
[b]PREVIOUS[/b].
|
|
|
|
Добавлено: Ср мар 21, 2007 16:50 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
profiT писал(а): Глубину надо изменять вручную, как раз через ALSO. Тогда как со числами на стеке она увеличивается автоматически.
ALSO глубину увеличивает на единичку, любой new - не изменяет.
Осталось разобраться, а какое же слово глубину уменьшает?
И что станет, если глубина окажется нулем?
[quote="profiT"]Глубину надо изменять вручную, как раз через ALSO. Тогда как со числами на стеке она увеличивается автоматически. [/quote]
[b]ALSO[/b] глубину увеличивает на единичку, любой [b]new[/b] - не изменяет.
Осталось разобраться, а какое же слово глубину уменьшает?
И что станет, если глубина окажется нулем?
|
|
|
|
Добавлено: Ср мар 21, 2007 16:37 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Скорее всего (я правда тут буду щас пальцем в небо) из-за того что порядок поиска раньше включал в себя только один CURRENT, а потом когда сделали его списком то нарушать "старое" поведение (когда словарь при выполнении затирал CURRENT собой) не стали.
Скорее всего (я правда тут буду щас пальцем в небо) из-за того что порядок поиска раньше включал в себя только один [b]CURRENT[/b], а потом когда сделали его списком то нарушать "старое" поведение (когда словарь при выполнении затирал [b]CURRENT[/b] собой) не стали.
|
|
|
|
Добавлено: Ср мар 21, 2007 15:30 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Очень хочется спросить, а зачем сделали так? Получилось ведь не по-фортовски.
Я так и не смог себя заставить реализовать такое...
Очень хочется спросить, а [b]зачем [/b]сделали так? Получилось ведь не по-фортовски.
Я так и не смог себя заставить реализовать такое... :(
|
|
|
|
Добавлено: Ср мар 21, 2007 14:59 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Хех.. Поздравляю, Pretorian. Это только человек который уже попривык к Форту может спросить такой вопрос. Так у него в голове будет непроизвольно возникать аналогия с Фортовым стеком и то что ALSO это "типа тоже самое" что и DUP.
А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского:
Код: 1 2 3 .. и тогда у нас будет на стеке три числа. А если у нас будет три словаря (порождённые через VOCABULARY): ниф-ниф, наф-наф и нуф-нуф, то после: Код: ниф-ниф наф-наф нуф-нуф
... глубина порядка поиска никак не изменится. А на вершине останется "последний герой": нуф-нуф.
Глубину надо изменять вручную, как раз через ALSO. Тогда как со числами на стеке она увеличивается автоматически.
PS. Опоздал...
Хех.. Поздравляю, [b]Pretorian[/b]. Это только человек который уже попривык к Форту может спросить такой вопрос. Так у него в голове будет непроизвольно возникать аналогия с Фортовым стеком и то что [b]ALSO[/b] это "типа тоже самое" что и [b]DUP[/b].
А прикол в том что когда мы пишем "new", то он записывается не в новый элемент порядка поиска. А в верхний, перезаписывая его. Это отличается от обычного Фортовского:
[code]1 2 3[/code]
.. и тогда у нас будет на стеке три числа. А если у нас будет три словаря (порождённые через [b]VOCABULARY[/b]): [b]ниф-ниф[/b], [b]наф-наф[/b] и [b]нуф-нуф[/b], то после:
[code]ниф-ниф наф-наф нуф-нуф[/code]
... глубина порядка поиска никак не изменится. А на вершине останется "последний герой": [b]нуф-нуф[/b].
Глубину надо изменять вручную, как раз через [b]ALSO[/b]. Тогда как со числами на стеке она увеличивается автоматически.
PS. Опоздал...
|
|
|
|
Добавлено: Ср мар 21, 2007 14:43 |
|
|
|
|
|
Заголовок сообщения: |
|
|
|
Pretorian писал(а): Не могу понять как так получается ALSO добавляет словарь в список для поиска : VOCABULARU new ALSO new
ALSO не добавляет новый словарь в список поиска, а как ты правильно понял дублирует первый словарь в списке поиска. То есть если просто выполнить ALSO, то слово два раза будет искаться в словаре, поставленным первым в список поиска.
В записи ALSO new сначала работает слово ALSO - оно первый в списке поиска словарь дублирует(ставит его первым в список поиска). Затем работает слово new (слово, созданное с помощью VOCABULARY).
Оно(new) заменяет первый словарь в списке поиска на словарь c именем new. Таким образом вновь созданный словарь new становится первым в списке поиска. Остальной порядок поиска не изменяется(для чего и использовали ALSO - если бы было без него( просто new) то из списка поиска изчез бы словарь, который был до этого первым в списке поиска).
В Форте (как правило) все слова работают отдельно, друг за другом.
[quote="Pretorian"]Не могу понять как так получается ALSO добавляет словарь в список для поиска : VOCABULARU new ALSO new [/quote]
ALSO не добавляет новый словарь в список поиска, а как ты правильно понял дублирует первый словарь в списке поиска. То есть если просто выполнить ALSO, то слово два раза будет искаться в словаре, поставленным первым в список поиска.
В записи ALSO new сначала работает слово ALSO - оно первый в списке поиска словарь дублирует(ставит его первым в список поиска). Затем работает слово new (слово, созданное с помощью VOCABULARY).
Оно(new) [b]заменяет[/b] первый словарь в списке поиска на словарь c именем new. Таким образом вновь созданный словарь new становится первым в списке поиска. Остальной порядок поиска не изменяется(для чего и использовали ALSO - если бы было без него( просто new) то из списка поиска изчез бы словарь, который был до этого первым в списке поиска).
В Форте (как правило) все слова работают отдельно, друг за другом. :o
|
|
|
|
Добавлено: Ср мар 21, 2007 12:03 |
|
|
|
|
|
Заголовок сообщения: |
ALSO в SPF |
|
|
Не могу понять как так получается ALSO добавляет словарь в список для поиска :
Код: VOCABULARU new ALSO new
но по исходному коду Код: : ALSO GET-ORDER 1+ OVER SWAP SET-ORDER ;
оно должно последний в списке словарь дублировать.
Не могу понять как так получается ALSO добавляет словарь в список для поиска :
[code] VOCABULARU new ALSO new [/code]
но по исходному коду [code] : ALSO GET-ORDER 1+ OVER SWAP SET-ORDER ; [/code]
оно должно последний в списке словарь дублировать.
|
|
|
|
Добавлено: Ср мар 21, 2007 10:42 |
|
|
|
|