Пользовательские типы
Есть такое задание (тема пользовательские типы).
• Простые типы: целые, вещественные и строки
• Сложные типы: структуры. Структура имеет название и состоит из нескольких полей, каждое из которых, в свою оче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]
Подскажите что я делаю не так, и как это исправить. Заранее всем благодарен.
так, что нужно указать конкретный тип:
isStructured:: Simple->String
isStructured (Myint a) = "integer"
Нужна рабочая ссылка на Microsoft Parallel Extensions для .net 3.5 или (лучше) на System.Threading.dll. Насколько я понял, этот файл входит в Parallel Extensions.
Гугль не помог.. Везде ссылка на майкрософт.ком, а там - 'не найдено' и т. д. (это если искать Parallel Extensions).
Буду безумно благодарен за помощь. =)
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? Что я делаю неправильно?