Я создал функцию, которая принимает список и список списков и возвращает новый список списков.F # функция как аргумент в функции совпадения
let rec calculator list SS =
match (List.item(0) SS) with
|[] -> []
|_ -> match (validate list (List.item(0) SS)) with
|(validate theCode list) -> List.append [(List.item(0) SS)] (calculator list (SS.[1..]))
|_ -> (calculator list (SS.[1..]))
validate - это функция, которая возвращает два набора intup. Пример (1,1)
список представляет собой список из четыре Интса
SS является список списков с четыре Интсом
theCode является список из четыре Интса
я получаю сообщение об ошибке " Дискриминатор шаблона «проверять» не определен ».
Возможно, это глупый вопрос, но тем не менее я не знаю ответа на него.
Нельзя ли использовать функцию в качестве аргумента в выражении соответствия. Или это совсем другое происходит здесь?
Насколько я знаю, две функции проверки возвратят два набора intup и, следовательно, должны быть в состоянии соответствовать этому.
Я думаю, что вы хотите, активный образец здесь –
* "Validate функции тх t возвращает два чередующихся ints. "* Предполагая, что функция проверяет некоторый ввод, что она возвращает, когда вход действителен? Что он возвращает, когда вход недействителен? –
Чтобы это скомпилировать, замените '| (проверьте список кодов) ->' с '| x, когда x = (проверьте список Code) -> '.Но, как пояснил @JohnPalmer, это просто уродливо - даже если «если ...» было бы чище здесь. – ildjarn