简体   繁体   中英

Basic haskell : Defining types

sorry to bother you. I'm new to haskell and trying to define a new type Person.

I'm using the GHCI compiler.

I'm running the file new.hs which includes:

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

but I get not in scope errors. Can anyone help?

Jeremy D helped me with this and I solved that but how can I add a function such as:

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

try with:

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

For a simple introduction, look here

To answer your second question, here is what I did:

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

When executing it:

*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> 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM