по умолчанию диалекте Rebol в (do
диалекта) не поддерживает понятие вызова функции с переменным числом аргументов. Если вы хотите нарушить правило, столь же фундаментальное, как это, тогда вам нужен ваш собственный диалект. Ничто не мешает вам сделать:
tweet [Hello World How Are You Today?]
Но идея использования word!
вместо string!
в этом случае немного изворотливые, так как многие общие твиты не действительны для Rebol парсер:
tweet [LOL! :)]
Пренебрегая этой проблемой, обратите внимание, что по умолчанию вы не получите оценку выражения. Таким образом, диалект tweet
должен будет выбрать способ показать, где вы хотите оценить. Вы можете использовать элементы получить слово, чтобы сделать подстановку переменных и скобки для более общих оценок:
>> a: 10
>> b: 20
>> tweet [When you add :a and :b you get (a + b), LOL ":)"]
"When you add 10 and 20 you get 30, LOL :)"
BTW, take-n
в примере Роуланда не возвращает блок. Не прямо, я имею в виду. Это, возможно, лучше понять скобки, и обращаясь к неявной «делать», что там на каждой интерпретации:
do [do (take-n 4) 1 2 3 4]
take-n
работает только с одним параметром («N»), а затем возвращает функцию, которая принимает п параметров. Назовем эту функцию п, так что шаг один из этой оценки превращается в нечто эквивалентное:
do [f 1 2 3 4]
Когда второй сделать пинки в, эта функция получает бежать ... и это возвращает блок. На практике я сомневаюсь, что вы захотите подсчитать такие параметры.
Спасибо большое, что ваши ответы всегда продуманны, у меня будет длинный уик-энд, чтобы прочитать их все торопливо :) –