2012-04-25 4 views
0

Я написал функцию под названием product:Почему этот код вызывает ошибку «неоднозначной переменной»?

product [] = 1 
product (x:xs) = x * product xs 

Когда я загрузить его в WinHug:

Ошиб.файла: \ product.hs:. 4 - Неоднозначное переменная появление "продукт"
** * Можно обратиться к: Main.product Hugs.Prelude.product

Что это значит?

ответ

15

product функция defined in the Haskell Prelude.

Ваших конфликты локальных определений с версией библиотеки.

Рассмотрите возможность переименования вашей версии, например. myproduct или import Prelude hiding (product).

Кроме того, вы можете рассмотреть вопрос о using GHC instead of Hugs.

8

Существует уже функция с именем product в Haskell Prelude.

Кстати, вы должны установить Haskell Platform вместо Hugs; Hugs - это старый проект, который больше не поддерживается, а GHC/i гораздо более хорошо поддерживается и имеет больше возможностей. Даже если ваша школа хочет, чтобы вы использовали Hugs, это не мешает тайно использовать платформу Haskell с GHCi наедине.

Смежные вопросы