Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Пользовательские типы

54K
20 ноября 2009 года
Amatory
1 / / 20.11.2009
Здравствуйте.
Есть такое задание (тема пользовательские типы).
• Простые типы: целые, вещественные и строки
• Сложные типы: структуры. Структура имеет название и состоит из нескольких полей, каждое из которых, в свою очеeредь, имеет название и простой тип.
База данных идентификаторов программы представляет собой список пар, состоящих из имени идентификатора и его типа. Разработайте тип данных, представляющий описанную информацию. Определите следующие функции:
1) isStructured, проверяющая, что ее аргумент является сложным типом.

Вот то, что пробую делать:
data Simple = Myint Int | Mydouble Double | Mystring String deriving (Eq, Show)
data Hard = Struct String [(String,Simple)] deriving (Eq, Show)
data Base a = Database [(String, a)] deriving (Eq, Show)

Далее требуется написать функцию isStructured:
isStructured:: a->String
isStructured (Myint a) = "integer"

Haskell выдает ошибку:
[COLOR="Red"]ERROR file:.\data.hs:6 - Inferred type is not general enough
*** Expression : isStructured
*** Expected type : a -> String
*** Inferred type : Simple -> String[/COLOR]
Подскажите что я делаю не так, и как это исправить. Заранее всем благодарен.
12K
23 ноября 2009 года
b1er
5 / / 19.07.2005
хаскел говорит, что заданный тип функции (строка "isStructured:: a->String") более общий, чем фактически указано при определении(строка 'isStructured (Myint a) = "integer"')
так, что нужно указать конкретный тип:
isStructured:: Simple->String
isStructured (Myint a) = "integer"
67K
28 декабря 2010 года
sadie
1 / / 28.12.2010
Здравствуйте.
Нужна рабочая ссылка на Microsoft Parallel Extensions для .net 3.5 или (лучше) на System.Threading.dll. Насколько я понял, этот файл входит в Parallel Extensions.

Гугль не помог.. Везде ссылка на майкрософт.ком, а там - 'не найдено' и т. д. (это если искать Parallel Extensions).

Буду безумно благодарен за помощь. =)
65K
14 апреля 2011 года
Anutka
2 / / 07.12.2010
не подскажите, я определяю класс Figure, затем создаю тип данных и затем мне надо определить экземпляр класса Figure.

class Figure f where
shift :: Num a => a -> a -> f a -> f a
rotate90 :: Num a => f a -> f a

data Point a
= Point
{
x :: a ,
y :: a
}

instance Figure Point where
shift dx dy (Point x y) = Point (x + dx) (y + dy)
rotate90 (Point x y) = Point (-y) x

почему возникает ошибка Illegal type in class constraint? Что я делаю неправильно?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог