Scala
-
[FP In Scala] 외부 효과와 입출력Software Development/Scala 2021. 6. 6. 19:33
모나드와 대수적 자료 형식으로 데이터베이스 조회나 파일 기록 같은 외부 효과를 처리하는 방법에 대해 알아본다. 핵심은 효과와 부수 효과의 구분이다. IO 모나드는 I/O효과를 수반한 명령식 프로그램을 참조 투명성(함수 외부의 영향을 받지 않는 것)을 어기지 않고 순수 함수적 프로그램에 내장하는 방법을 제공한다. 이 모나드는 효과 있는(effectful) 코드, 즉 외부 세계에 일정한 영향을 미쳐야 하는 코드를 프로그램의 나머지 부분과 명확히 분리한다. 또한 효과 있는 계산의 서술(description)을 순수 함수를 이용해서 계산하고, 그 서술을 개별적인 해석기를 이용해서 실행함으로써 실제로 효과를 수행한다는 것. 이는 명령식 프로그래밍을 위한 내장 영역 국한 언어(embedded domain-speci..
-
[FP In Scala] 함수적 자료구조Software Development/Scala 2021. 4. 11. 18:39
함수적 프로그램은 변수를 갱신하거나 mutable(변이 가능)한 자료구조를 수정하는 일이 없다. 함수형 프로그래밍에서 사용할 수 있는 자료구조는 어떤 것일까? 함수적 자료구조가 무엇이고 그것을 다루는 방법에 대해 알아보자. 이를 통해 함수형 프로그래밍에서 자료구조를 정의하는 방법을 소개하고 관련 기법인 패턴 부합도 설명한다. 1. 함수적 자료구조의 정의 함수적 자료구조: 오직 순수 함수만으로 조작되는 자료구조 순수 함수: 자료를 변경하거나 부수 효과를 수행하는 일이 없어야 한다. 함수적 자료구조는 정의에 의해 불변이(immutable). ex) 빈 목록(List()나 Nil), 정수 3이나 4 3 + 4를 평가하면 3이나 4가 수정되는 일이 없다. 마찬가지로 두 목록을 연결하면 목록은 변하지 않고 새로운..