2011-10-18 5 views
21

역 따기 연산자의 고정은 무엇입니까? 이 코드에서 예를 들어 백틱 연산자의 정확성?

Real World Haskell에서 :

ghci> (1+) `fmap` [1,2,3] ++ [4,5,6] 
[2,3,4,4,5,6] 

그것은 역 따옴표 연산자 `fmap`++하지만 none is given by GHCi보다 높은 고 정성을 가지고 분명합니다. the Haskell Report

+1

@ dabe4420 BTW,이 버그는 REPL에 정의 된 함수의 고정 선언에만 영향을줍니다. ''f '\'elem \' "abc"++ "ijk"'와 같은 것을 잘 비교해보십시오. – fuz

답변

21

§4.4.2는

상관 조작자가 정착 선언 9

"상관 연산자"infixl 것으로 가정 역 따옴표 정상적인 기능 이름을 포함 부족한 상태.

귀하의 예를 때문에 ++이 작용 fmap의 결과에 `fmap`++보다 높은 고 정성을 가지고 있음을 보여준다.

+4

그런 연산자에 대한 고정을 지정할 수 있습니다. 예를 들어,'1 + 2 \'const \'5 = 3'이지만'1 + 2 \'div \'5 = 1'입니다. – Rotsor

+4

@Rotsor :'\'const \''의 고정 성이'\'div와 같았더라도'1 + 2 \'const \'5' 표현식의 값이 3이기 때문에 당신의 예제는 예제가 아닙니다. \''. –

+4

오, 어떻게 그럴 수 있니? '2 \'div \'1^2 = 2'와'2 \'const \'1^2 = 4'는 예제입니다. – Rotsor