나는 게터에서 Lens
을 만들려고하고 나는 다른 Lens
에서 가져온 세터 구축 :동일한 렌즈
import Control.Lens
idL :: Lens s t a b -> Lens s t a b
idL l = lens (\s -> view l s) (\s b -> set l b s)
를, 그것은 모호한 (나를 위해) 오류와 함께 실패
Expected type: Getting a s a
Actual type: (a -> Accessor a b) -> s -> Accessor a t
In the first argument of `view', namely `l'
내가 뭘 잘못하고 있니? 아마 뭔가 기본적인 것일 수도 있지만, 슬프게도 나 자신이 풀기 위해 실제로 일어나고있는 일 (Getting
, Accessor
)에 대해 아직 충분히 알지 못합니다.
잘 작동합니다 ('Rank2 : Types' 언어 pragma 사용). 파일에서 모듈을로드하거나 repl에'idL'을 정의하려고합니까? –
@ChrisTaylor : 파일에서,'Rank2Types'가 활성화되었습니다. 도움이된다면 렌즈 3.9.0.3 및 ghc-7.6.3도 사용하고 있습니다. – Artyom
나는 GHCi에서도 이것을 실행했다. 문제는 없다. (명시적인 타입 서명이 필요하다.) – jozefg