2013-10-03 5 views
-1

Извините, что беспокою вас. Я новичок в haskell и пытаюсь определить новый тип Person.Basic haskell: Определение типов

Я использую компилятор GHCI.

Я бегу в файл new.hs, который включает в себя:

Name = String 
Age = Int 
Weight = Int 
Person = (Name, Age, Weight) 

, но я получаю не ошибок области видимости. Может ли кто-нибудь помочь?

Джереми D помог мне с этим, и я решил, что, но как я могу добавить функцию, например:

isAdult :: Person -> Bool 
George = ("George", 20, 80) 
isAdult George = if Age >=18 
+0

Вы только что ответили на свой вопрос. –

+0

Нет, почему вы его отредактировали? Это было правильно. Теперь вы делаете это неправильно! –

+0

Отредактировано немного больше, не могли бы вы указать на мою ошибку, пожалуйста? Как определить Person? – John

ответ

4

попробуйте:

type Name = String 
type Age = Int 
type Weigth = Int 
type Person = (Name, Age, Weigth) 

Для простого введения, смотрите here

Чтобы ответить на ваш второй вопрос, вот что я сделал:

newtype Name = Name String deriving (Show) 
newtype Age = Age Int deriving (Show) 
newtype Weigth = Weight Int deriving (Show) 
newtype Person = Person (Name, Age, Weigth) deriving (Show) 

isAdult :: Person -> Bool 
isAdult (Person(_, Age a, _)) = a > 18 

При выполнении его:

*Main> let p = Person(Name "Jeremy", Age 18, Weight 199) 
*Main> p 
Person (Name "Jeremy", Age 18, Weight 199) 
*Main> isAdult p 
False 
*Main> let p = Person(Name "Jeremy", Age 20, Weight 199) 
*Main> isAdult p 
True 
*Main> 
+0

Спасибо, но как бы добавить функцию, в которой участвует человек? isAdult :: Person -> Bool isAdult (a, b, c) = if b> = 18 then True else False – John

+0

Я отредактирую свой ответ :) –

+0

Спасибо, я добавил код в основной вопрос, чтобы уточнить мои проблема. – John

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