2014-11-30 2 views
1

프리즘에 관한 '렌즈'문서를 탐색 중이었고 Control.Lens에서 라인을 발견했습니다. 프리즘을 스마트로 사용할 때 삽입 연산자 검토 연산자 # '가 일반적으로 사용되는 것으로 나타났습니다. 건설자.'.프리즘을 스마트 생성자로 사용

_Left, 'Either'데이터 형식에 대한 생성자 중 하나가 스마트 생성자와 같이 보이지 않는데 (인수 값에 대한 추가 제한 사항 추가) . 그래서 나는 프리즘을위한 조금 주위에 스마트 생성자로 봤지만 어떤 예제도 찾지 못했습니다.

이 성명서의 의미가 정확히 무엇인지 알고 예를들 수있는 사람이 있습니까? 물론 스마트 생성자에 대한 내 정의가 올바르지 않다고 말할 수도 있습니다.

답변

2

Prism 유형의 한보기는 거의 동일 동형입니다. 실제로, lens documentation"It may help to think of this as a Iso that can be partial in one direction."

라고 말합니다. 그리고 부분적인 방향은 똑똑한 생성자에 대해 꽤 좋은 비유입니까? 유형 (유형과 일치하는)의 인수 세트를 넘겨 줄 수는 있지만 그 중 일부는 값을 작성하지 못합니다.

+0

내가 생각하는 것을 놓치고 있습니다. 예를 들어 Either String Int 유형에서 _ 왼쪽 프리즘은 올바른 문자열 유형을 전달하는 한 절대로 실패하지 않습니다. 그들은 항상 가치를 창출 할 것이라고 생각합니다. _Left가 부적절한 인수 값을 보호 할 수있는 방법을 모르겠다. 그래서 어떤 인수 값이 올바른 Aither를 생성하지 못하는 것을 실제로 보지 못한다. 아니면 왼쪽에 집중해서는 안됩니까? 아니면 '가치'를 잘못 해석 한 것입니까? – Kasper

+1

@Kasper '프리즘'의 편파성의 방향이 '리뷰'를 실패 할 수있는 생성자로 사용하는 것과 맞지 않는다는 것이 맞습니다. 어쩌면 스마트 생성자에 대한 더 광범위한 정의를 사용하고 있으며, 특정 유형의 값을 반환하는 함수의 개념을 사용하는 것이 가장 좋습니다. 그 의미는 거의 쓸모가 없지만 전례가 아닙니다. – Carl

관련 문제