안녕하세요 저는 하스켈 초보자이며 정말 실종입니다. 이 내 과제에 대한, 그리고 그것을 higer 주문 기능을 모두더 높은 차수 함수를 사용하여 매개 변수로 haskell 정렬하기
Main> mySort (<) [1,5,3,6,4,1,3,3,2]
[1,1,2,3,3,3,4,5,6]
Main> mySort (>) [1,5,3,6,4,1,3,3,2]
[6,5,4,3,3,3,2,1,1]
Main> mySort longerWord [“Hello”, “The”, “a”, “Daniel”, “Declarative”]
[“Declarative”, “Daniel”, “Hello”, “The”, “a”]
첫째을 사용하여 아래와 같이 뭔가를 나에게 묻는다, 나는 그것이 <,> 또는 longerWord
여부를 구별하는 기능을해야한다고 생각checkConditionStr::String->Int
checkConditionStr str
|str=="(<)" =1
|str=="(>)" =2
|str=="longerWord" =3
하지만 예는 따옴표가없는 (즉, mysort (<) 나의 종류 "(<)은"그래서 여기에 다른 longerWord
입니다. 내 첫 번째 문제는. 나는이 기능을 worte하지만 컴파일되지 것입니다
checkCondition::Ordering->Int
checkCondition ord
|ord==(<) =1
|ord==(>) =2
|otherwise =2
둘째로 고차 함수를 이해하는 데 여전히 어려움이 있습니다. 이게 말이 되겠습니까?
mySort::(String->Int)->[a]->[a]
mySort i list
|i==1 map (sortBy compare) list
|i==2 map (sortBy(flip compare)) list
기능은 미래에 알려질 수있는 것을 주입하기 위해 열어 두는 것입니다. – ony
당신은 내가 말한 것을 이해하지 못했거나 당신이 말하는 것을 이해하지 못했습니다. 이 경우 고차 함수는 함수 집합으로 제한되기 때문에 myHighOrder f = if f == (<) then ... '은 이해가되지 않는다고 말하려고합니다. 따라서 직접 작성 될 수 있습니다. 일반적인 고차 함수는 실제로 몇 가지 제약 조건을 만족하는 함수로 매개 변수화 할 수있는 개방형 함수 계열입니다. – ony
@ony : 정확히 말하면, 또는 내 대답에서 말하려고하는 것입니다. – hammar