2013-08-05 5 views
2

Я использую Rebol/Core 278-3.1 на 64-разрядной версии Win-7, запущенной из стандартной командной оболочки Windows. И мне интересно, как объяснить моему юному другу (веб-дизайнером по фонам), что команда переводчика CD не требует %.Rebol cd не требует%?

Это напоминает мне, что DOS не нуждается в пространстве после cd. REPL не является оболочкой, так зачем делать этот ярлык, как если бы он был оболочкой? Почему строковое имя каталога рассматривается как слово, когда такое слово не задано? Разве это не делает код ненужным двусмысленным с первого взгляда?

(Подумайте, как будто это ваш первый опыт языка программирования ... не как старый пользователь логинсервера кд мв в Unix оболочек.)

Даже если слово установлено, что слово игнорируется CD, если только прибудете слово не используется ... пример был бы:

dir %tests 

и

dir tests: 

"завершить", где cd tests действует так, как будто там нет ни слова с get-word :tests


Примечание: Saphirion R3 имеет следующее поведение: если я поставил слово на имя дир, но в верхнем регистре, то прибудете слово перемещает меня этот каталог и показывает его в этом неправильном верхнем регистре. Но этого названия нет. Я считаю, что компакт-диск должен был дать ошибку. Несомненно, что касается юникода и соответствия Linux-подобному миру .. или это работает только в Windows? Off Я иду в Virtual Box с убунтом и слогом ...

+0

Даже если слово установлено, это слово игнорируется с помощью cd, если не используется слово get ... example будет dir% tests и tests: «complete», где cd-тесты действуют так, как будто нет слова с get -word: тесты –

+0

проверены с использованием ядра ребра 278-3.1 на 64-разрядной версии Win-7, запущенной из стандартной оболочки win cmd –

+0

Saphirion R3 имеет следующее поведение: если я устанавливаю слово в имя dir, но в верхнем регистре, get -word перемещает меня в этот каталог и показывает его в этом неправильном верхнем регистре. Но этого названия нет. Я считаю, что cd должен был дать ошибку. Несомненно, что касается юникода и соответствия Linux-подобному миру .. или это работает только в Windows? Off Я иду в свою виртуальную коробку с ubuntu и Syllable ... –

ответ

3

Вы можете посмотреть на источнике функции cd написав

source cd 

Там вы можете обнаружить, что для удобства других типов данных преобразован в файл.

«Почему строковое имя dir рассматривается как слово, когда такое слово не задано?»

Rebol распознает слова по синтаксису, позволяя символическое программирование. Не имеет значения, было ли слово задано или не было распознано как слово.

«[Если] я поставил слово на имя дир, но в верхнем регистре, то прибудете слово перемещает меня к этой директории и показывает его в этом некорректной верхнем регистре»

Некоторые операционные системы (такие как Windows) стараются быть нечувствительными к регистру, полагая, что это более удобно для людей.

Обработка по столбцам по умолчанию по умолчанию не зависит от регистра.

«Кто-нибудь когда-либо предлагал, чтобы chdir мог иметь все удобства и причуды, и что cd ожидает, что файл будет правильно назван?"

То есть по существу то, что произошло, но по-другому. Там есть change-dir функция, которая настаивает на надлежащем (файл!) Тип данных, в то время как функция cd является„удобной аббревиатурой“.

+0

Да, я могу показать ему это ... но я показывал ему извращенные аспекты Perl, а некоторые в Ruby и Python (он все еще склоняется к Python или Ruby над Rebol или моему личному предпочтению Curl + ObjectIcon ;-) My предпочтение в стороне, я по-прежнему призываю Rebol к группе, поддерживающей его, поскольку Object Icon - это группа из 2, и Curl теперь группа на японском и корейском языках, которые сейчас редко публикуются на английском языке. –

+0

Кто-нибудь когда-нибудь предлагал, чтобы chdir мог иметь все удобства и причуды, и что cd ожидает, что файл будет правильно назван? Это добавляет слово с пухом/сахаром, но оставляет простой, однозначно простой. Удобство для людей Perl использовалось в раннем Ruby ... и может даже объяснить его существование, как он объясняет Objective-C, я верю. Но теперь программисты не-C изучают Obj-C ;-) Я принимаю, что http: // понимается путем чтения без% sigil/prefix ... существуют случаи, отличные от {comment}, где кавычки являются необязательными для строк, предназначенных для быть строковыми значениями? –

+0

Я использую скрипты rebol в основном для создания разметки Curl ... но он будет работать с HTML5 ...Я предпочитаю пленочную камеру, но я все же предлагаю цифровую камеру. У Rebol отличная группа ... это очень важно для новичков. Curl даже не на StackOverflow ... и не ObjectIcon. Я так стараюсь отложить предпочтения/смещение. Существует YouTube, который делает эти усилия справедливыми и сбалансированными, а не «мои/наши лучше». Я также предпочитаю Pharo Smalltalk, но по-прежнему рекомендую другую версию в зависимости от соображений, отличных от моих предпочтений, когда речь заходит о реализациях Smalltalk. –

-1

Вы говорите .. «РЕПЛ не оболочка» Я полностью согласен на соответствующую записку, я категорически против:

append [x y z] q 

... появляется врезаться интерпретатор, вызывая ярлык для quit , Это непростая ошибка. И я чувствую, что копейки и фунт-глупо делать аналогичные ярлыки, которые вы заметили в основном интерпретаторе. Rebol - это грамотный англоязычный язык, который читает четко ... и такие вещи, как LS и CD не относятся к ядру. В любом случае они должны быть частью диалекта оболочки.

Должен ли автор диалектов обрабатывать слова как строки, даже если область юридических слов не соответствует диапазону юридических строк? Я думаю, что это должно быть разрешено, но я согласен, что он создает плохой прецедент в исполняемом файле доставки.

+0

позволяют многое, но начинать чистым и простым ;-) Но не добавляйте прагму для ALLOW_QUIRKS ;-) (Даже автор «Трейтов для Smalltalk» теперь сомневается в чертах/миксинах, поскольку они становятся «классными» чертами по сравнению с чертами экземпляра, поскольку основная функция, а не доступная добавка.) –

+0

Это не имеет никакого отношения к вопросу о функции 'cd'. – rebolek

+0

@rebolek Ядро вопроса заключается в том, чтобы убрать формализм языка для удобства в командной строке REPL. Таким образом, это связано с точкой «REPL не является оболочкой», тем более, что CD принимает слова. Но мотивации, приводящие к допуску аббревиатуры, схожи ... ленивость, не желающая вводить знак процента, - это еще один аспект того же деформирования языка из коробки, который влияет на вас, независимо от того, работаете ли вы на REPL или нет , – HostileFork