2013-10-11 6 views
2

에 오류가 난 내 코드에 어떤 문제가 있는지 모르겠지만, 시도하고 그것을 실행할 때 나는 GHCi를 사용하고기본 하스켈 : 간단한 함수

Couldn't match type `Integer' with `Int' 

를 얻을. 나는 상점을 통해 가서 고객 이름을 모두 알려주는 기본적인 프로그램을 만들고 싶다. 그래서 나는 그들이 도서관에서 빌린 물건을 찾으려고 수색을 할 수있다. 이름을 얻는 더 좋은 방법이 있습니까?

type Name = String 
type Customer = (Name,Int) 
type shop = [Customer] 
shop = [cust1, cust2] 

cust1 = ("Neil", 311) 
cust2 = ("Fred", 0) 

getName :: (String,Int) -> Name 
getName (a,b) = a 

답변

4

GHCi가 Int 이상 Integer를 기본값으로 사용됩니다

내 코드입니다. 튜플 유형을 cust1 = ("Neil", 311 :: Int) 또는 cust2 = ("Fred", 0) :: (String, Int)으로 지정해야합니다. 이미 Customer 정의가있는 경우 업데이트 후

편집

, 당신은 getName

getName :: Customer -> Name 
getName = fst 

을 정의하여 또한 일을 조금 단순화 할 수

cust1 = ("Neil", 311) :: Customer 
cust2 = ("Fred", 0) :: Customer 

getName :: Customer -> Name 
getName (a, b) = a 

로 작성해야 ETA 감소 및 내장 함수 사용 fst

+0

감사합니다. 항상 도움이됩니다. 대신에 함수의 + 선언을 변경하여 매번 그렇게 할 필요가 없으며 정수가 아닌 Int 일 필요가 없습니다. – John

+0

문제가 없습니다! 다른 사람들이 대답이 해결되는지를 알 수있는 방식으로 받아 들여야한다는 것을 기억하십시오.) – bheklilr