Я начал изучать Oz/Mozart в последнее время, и на практике я пытаюсь написать код простой процедуры «For», что циклы от значений «Init» до «End» и в каждом цикле печатать текущий номер цикла в браузере. Вот код:Ошибка аргумента в моем цикле кода «For» (Oz/Mozart)
Эта процедура создает список из Init до конечного значения:
declare
fun {Listing Init End}
if Init == End then
[Init]
else
Init|{Listing Init+1 End}
end
end
Это делают петлю и применяет функцию «F» в каждом цикле:
declare ForList
fun {ForList F L}
case L of H|T then
{F H}|{ForList F T}
else nil end
end
Этот завершите вышеуказанные функции, чтобы можно было использовать значения Init и End вместо списка:
declare MyFor L X in
proc {MyFor F Init End}
L = {Listing Init End}
X = {ForList F L}
end
Окончание LY, я называю MyFor:
{MyFor Browse 1 4}
Когда я пытаюсь скомпилировать, я получаю эту ошибку:
%*************** Error: illegal number of arguments *************
%**
%** In statement: {<P/1 Browse> 1 _<optimized>}
%** Expected: 1 argument
%** Found: 2 arguments
%**
%** Call Stack:
%** procedure 'ForList' in file "Oz", line 11, column 0, PC = 15793
(Строка 11 является "весело {ForList FL}")
I» В некоторых подпрограммах вы пытались использовать «func» и «proc», чтобы увидеть, что-то изменилось, но я действительно не знаю, что я делаю неправильно.
Что-то не хватает в вашем коде. Кажется, вы не называете 'ForList' нигде? – wmeyer
Я предполагаю, что вы вызываете 'ForList', не потребляя его результат. В Oz, возвращаемое значение функции также считается аргументом. Поэтому его необходимо использовать (с присвоением типа «Res = {Function Arg1 Arg2}»). – wmeyer
Да, извините, я сейчас редактировал (вызов ForList находится внутри объявления MyFor). Я добавил переменную X для хранения возвращаемого значения для списка, но теперь я получаю аналогичную ошибку (я поместил ее в отредактированное сообщение). Я попытался сохранить возвращаемое значение и при вызове MyFor, но это не работает нигде, вместо этого он дает мне эту ошибку: % *************** Ошибка: незаконное количество аргументов ********* % ** В заявлении: {
1 4 A} % ** Ожидаемое: 3 аргументов % ** Найдено: 4 аргументов –
Granjero