![]() |
|
![]() ![]() ![]() |
|
polakrez |
|
|||
Новичок Профиль Группа: Участник Сообщений: 1 Регистрация: 17.12.2011 Репутация: нет Всего: нет |
Здравствуйте!
Имеется такое задание: Определить число вершин дерева, степень которых совпадает со значением элемента. Начало стандартное: open System type 'T tree = Leaf of 'T | Node of 'T*('T tree list) let treee = Node(3,[Node(2,[Leaf(0)]);Node(3,[Leaf(6);Leaf(7)]);Leaf(4)]) let rec iter f = function Leaf(T) -> f T | Node(T,L) -> (f T; for t in L do iter f t done) let iterh f = let rec itr n = function Leaf(T) -> f n T | Node(T,L) -> (f n T; for t in L do itr (n+1) t done) in itr 0 Далее: let cou = 0 let count tr = match tr with Leaf(T) -> match T with 0 -> (*acc cou*) printf "aa" | Node(T,L) -> match (T - List.length L) with 0 -> (*acc cou*) printf "aa" let rec summT tree = match tree with Leaf(T) -> count Leaf(T) | Node(T,L) -> (count Node(T,L); for t in L do summT t done) Этот цикл for не работает из-за несоответствия типов. Как решить данную проблему? Как и где сделать цикл? Буду благодарна за ответы. |
|||
|
||||
k0rvin |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 442 Регистрация: 24.1.2010 Репутация: нет Всего: 5 |
попробуйте прописать типы функций явно, тогда все станет понятней
-------------------- “Object-oriented design is the roman numerals of computing.” — Rob Pike All software sucks |
|||
|
||||
![]() ![]() ![]() |
Правила форума «Функциональные языки: общие вопросы» | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Void. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Функциональные языки: общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |