모나드, 응용, 화살표 등과 같은 많은 기능적 관용어가 있습니다. 그것들은 다른 기사에 문서화되어 있지만 불행히도 한 곳에서 요약 된 책이나 기사를 모릅니다 ( Typeclassopedia가 있지만 많이 있습니다 잘 다루지 않은 영역). 누구든지 한곳에서 잘 다루고 FP에서 중급 기술을 가진 프로그래머가 접근 할 수있는 기사 / 책을 추천 할 수 있습니까?
모나드, 응용, 화살표 등과 같은 많은 기능적 관용어가 있습니다. 그것들은 다른 기사에 문서화되어 있지만 불행히도 한 곳에서 요약 된 책이나 기사를 모릅니다 ( Typeclassopedia가 있지만 많이 있습니다 잘 다루지 않은 영역). 누구든지 한곳에서 잘 다루고 FP에서 중급 기술을 가진 프로그래머가 접근 할 수있는 기사 / 책을 추천 할 수 있습니까?
답변:
내 제안은 Scala를 배우고 싶다면 Paul Chiusano와 Runar Bjarnason의 책을 읽는 것입니다.
파트 II : 기능 설계 및 결합 자 라이브러리
파트 III : 기능적 디자인 패턴
파트 IV : 규칙 깨기 : 효과와 I / O
이러한 모든 구성에 대한 다양한 사용법을 자세히 다루는 기사 나 책을 알지 못해서 죄송합니다. 그러나 개별 리소스에 대한 몇 가지 링크를 제공 할 수 있습니다.
매우 일반적인 패턴은 단순한 모나드 대신 모나드 변환기 를 만드는 것입니다 (다음 단락의 링크 참조). 이는 기본적으로 다른 모나드와 결합되어야하는 무언가를 빌드하여 두 모나드의 기능을 처리 할 수있는 더 복잡한 것을 의미합니다.
에서 실제 세계 하스켈 모나드에 대한 몇 장있다. 에서 제 14 장 모나드 저자는 기초 및 몇 가지 일반적인 용도 (아마, 목록, 상태)를 설명한다. 15 장. 모나드를 사용한 프로그래밍은 모나드 를 효과적으로 사용하는 방법에 대한 자세한 설명을 제공합니다 (독자 모나드도 다룹니다). 다음 장에서는 Parsec 사용 방법을 설명 하지만 실제로 작동하는 방법을 다루는 기사를 검색하는 것이 더 흥미로울 수 있습니다. 파싱을 위해 모나드를 잘 조직적으로 사용하는 좋은 예가되어야합니다. Fianlly, 18 장. 모나드 트랜스포머모나드 변환기의 작동 방식을 소개하고 단계별로 빌드하는 방법을 보여줍니다. 이 장의 마지막 섹션에 대한 고려 사항도 흥미 롭습니다.
나는 한때 모나드의 창조적 인 사용에 관한 정말 흥미로운 질문을 읽었습니다 . 제안 된 링크는 주제에 대한 멋진 읽기였습니다. 그런 정신으로 화살에 대해서도 똑같이 물어 보려고했습니다 . 모나드에있는 것보다 확실히 답이 적었지만 그럼에도 불구하고 흥미로운 것은 얻었습니다.
4 인조의 OOP 패턴과 관련하여 IBM의 Functional Think 시리즈 주제에 대한 멋진 3 개의 기사가 있습니다. 대상 기능 언어는 Scala입니다. OOP의 일반적인 디자인 패턴을 설명하고 Scala에 매핑하는 방법을 보여줍니다.
귀하의 질문에 가장 관련성이 높은 기사는 확실히 첫 번째 기사이지만 다른 두 기사는 그럼에도 불구하고 흥미로운 관련 기사 일 수 있습니다.
Jeremy Gibbons는 FP 블로그에 Patterns를 가지고 있는데, 이는 결국 당신이 요구하는 책이 될 운명입니다. 물론, 그것은 당신이 지금 당장 원하는만큼 유용 할 수있는 상태는 아니지만 그는 약간의 격려를받을 만합니다!
한편, Brent Yorgey의 Typeclassopedia에 +1이라고 말하겠습니다. 정말 유용하며, 나중에 혼동되는 부분이 있다면이 사이트는 그 부분을 이해하기에 좋은 곳입니다. 브렌트가 계속 검토 중이라는 것을 알고 있습니다. 그가 독자들에게 다가 가지 않는다면 도움을주세요.
많은 FP 관련 자료가 Oleg의 사이트에 게시되었습니다. http://okmij.org/ftp/
Josh Suereth의 FP 패턴에 대한 프레젠테이션 : http://jsuereth.com/intro-to-fp/
Learn You a Haskell for Great Good 의 이후 장을 읽었 습니까?
6 장에서는 기능 언어에서 더 중요한 두 가지 "디자인 패턴"인 맵과 접기에 대해 다룹니다.
11-13 장은 Functor, Applicative Functor 및 Monads를 순서대로 다룹니다. 이것은 도움이됩니다-많은 튜토리얼에서 Functor와 Monads를 소개하고 마지막에 Applicative Functor를 붙입니다 (아무리 다루더라도). LYAH의 순서는 Functors => Applicative Functors => Monads에서 이동하면 점차 일반 성과 권력의 사다리를 오르기 때문에 더 좋습니다.
14 장에서는 Zippers를 다룹니다. 특정 데이터에 대한 포인터가있는 컨테이너 클래스라고 효과적으로 생각할 수 있습니다. 즉, 포인터 위치에서 O (1) 액세스 및 업데이트를 얻을 수 있습니다.
Haskell의 고급 주제 인 Arrows 또는 Comonads는 다루지 않습니다. Arrows 또는 Comonads를 사용하는 방법과 이유를 이해하려면 이미 Monads에 대해 확실히 알고 있어야하므로 이것이 문제가되지 않는다고 생각합니다. LYAH는 Haskell 시장의 초보자를 겨냥하고 있습니다.