2011-04-01 3 views
-2

강사가이 질문에서 무엇을하기를 원하는지 이해하는 데 어려움이 있습니다. 누구든지 내가 원하는 것을 나에게 설명 할 수 있을까?Higher Order Function

삽입 정렬 알고리즘의 상위 버전을 정의하십시오. 즉 기능

insertBy :: Ord b => (a->b) -> a -> [a] -> [a] 

inssortBy :: Ord b => (a->b) -> [a] -> [a] 

을 정의하고 그 날 혼란있어 곳 비트이다 inssort F 형 L이 원소 X가 elementyif F X < F y를 앞에 오도록리스트 L 정렬되도록.

답변

1

숫자를 정렬하는 경우 x가 < 인 의미가 명확합니다. 그러나 편지를 분류한다면 어떨까요? 아니면 고객? 아니면 (컴퓨터에) 명확한 명령이없는 다른 것?

그래서 정렬 프로 시저의 순서를 정의하는 함수 f()를 작성해야합니다. f()는 문자 나 고객 등을 취하고 컴퓨터가 실제로 정렬 할 수있는 각각의 정수를 반환합니다.

적어도이게 문제의 설명입니다. 나는 개인적으로 두 항목 x와 y를 받아들이고 x가 < 인 경우 부울을 반환하는 조건자를 설계했을 것입니다. 그러나 어느 것이 든 괜찮습니다.

+1

실제로이 설명은 정수에 대해 아무 것도 말하지 않습니다. Haskell에서'(>)'는 어떤 타입의 타입 (Ord'라는 typeclass에 의해 표현됨)에 사용될 수 있습니다. 그래서 첫번째 매개 변수는'a''를''b''''로 바꾸는 함수입니다. – chris

0

이 코드는 삽입 정렬 알고리즘을 다시 작성해야하지만 함수를 매개 변수로 사용하여 상위 순서 함수로 사용하기를 원합니다.

오타가 포함 된이 코드는 현재 특정 대학에서 만기가되는 작품에서 비롯된 것 같습니다. "삽입 정렬 algortihm"을 검색하는 동안이 페이지를 발견했습니다. 문서에서 제외 된 단어, 오타가 포함되어 있습니다.

인터넷에서 코드를 찾는 것은 위험한 일입니다. 내가 삽입 정렬 알고리즘 wikipedia 항목을 추천하거나 강의 슬라이드에 제공된 하스켈 코드 (스택 정렬 알고리즘과 고차 함수를 찾고있을 것입니다.)는 스택에 배치 한 여러 쿼리와 반대입니다 과다?