2014-04-19 5 views
1

저는 하스켈에서 코드를 작성하여 haskell을 배웁니다. 나는 목록 ([] 또는 XS)과 인수 (X 또는 Y)와리스트는 인수 제시한다, 같이 아무리을받을 것을 표현하고 싶었다첫 번째 Haskell 프로그램

first :: [Int] -> Int -> Int 
first [] x  = x 
first xs y  = y 

: 것 같습니다.

나는 다음과 같은 쓸 때

그래서, : 첫번째 [1,2,3] 네, 다음 ghci는 말한다 :

Couldnt match expected type ´a0 -> t´ wth actual type ´[t0]´. Relevant bindings  
include it :: t(boudn at <>:6:1)but its type ´[t 0]´ has none 
In the expression : [1,2,3] 4 
In an equation for ´it´: it = [1,2,3] 4 

내가 그것을 어떻게 해결할 수 있습니까? 내가 뭘 잘못 했니? 누군가 나를 도울 수 있습니까?

+1

나를 위해 잘 작동합니다. – Sibi

+1

첫 번째 인수에 전혀 신경 쓰지 않는다면 단순히 'first _ x = x'가 아닌가? – Mat

+0

'[1,2,3,4] 4 대신에'[1,2,3,4] 4'라고 쓰셨습니까? –

답변

2

first [1,2,3,4] 4 대신 [1,2,3,4] 4을 사용하는 것 같습니다. 그런데


> [1,2,3,4] 4 

<interactive>:1:0: 
    Couldn't match expected type `t1 -> t' against inferred type `[a]' 
    In the expression: [1, 2, 3, 4] 4 
    In the definition of `it': it = [1, 2, 3, 4] 4 

first의 당신의 정의는 다음과 같다 :

에 상관없이 첫 번째 인자가 무엇인지 의미
first :: [Int] -> Int -> Int 
first _ x  = x 

는 항상 두 번째 인수를 반환합니다.

+0

그 경우 오류 보고서에 포함됩니다 생각 :'The function [1, 2, 3, 4 ]가 하나의 인수'에 적용됩니다. :) – Sibi

+1

@Sibi Asker는 오류 메시지의 마지막 줄에 표시된대로 it = [1,2,3] 4'을 평가하려고했습니다. –

+0

아하, ok ... 다른 프로그래밍 언어에서 알 수있는 "_"기호는 와일드 카드입니까? 당신의 대답의 시작 부분에 : 아니오, 나는 첫번째 글자를 써야합니다. [4] 그러나 어떻게 함수 선언을 와일드 카드없이 바꿀 수 있습니까? – user3097712

관련 문제