(TIL) 20221214/ 함수형 프로그래밍에서의 순수 함수

2022. 12. 15. 02:44TIL(Today I learned)

반응형

🏴󠁩󠁤󠁪󠁷󠁿Facts(한 것) & Findings(배운 것)


* <자바에서 코틀린으로> 스터디 진행

 

많은 부분이 인상 깊었지만 기존에도 관심이 많았던 순수 함수에 대한 새로운 지식을 얻어 공유하려 합니다.

 

 

(함수형 코딩) 1장/ 함수형 사고란 무엇인가?

책을 펴고 1장을 펴면 다음과 같은 챕터에 대한 설명을 볼 수 있다. 이 장에서는 함수형 사고가 무엇인지, 왜 함수형 사고가 더 좋은 소프트웨어를 만들려는 개발자에게 도움이 되는지 설명합니

mirrorofcode.tistory.com

 

이전에 이런 글을 적은 적이 있는데, 위 글에서도 순수 함수에 대한 언급이 있습니다.

 

순수 함수는 "인자에만 의존하고 부수 효과가 없는 함수이다."라고 명시되어 있다.

 

그럼 이런 함수는 어떨까?

 

println("Hello Kotlin")

 

이 함수는 순수함수일까??

(순수 함수가 아니기 때문에 가져온 예시이다. 그리고 print자체는 동작이기 때문에 부수효과 그 자체다.)

 

그런 이유는 여러가지입니다.

1. print문은 외부 환경의 영향을 받는다.

 

당장 println에서 ln은 개행을 의미하는데, 윈도우와 리눅스 계열에서 둘은 다르게 작동합니다.

즉, 외부의 영향을 받습니다.

 

2. print문을 실행한다고 다 print가 성공하지 않는다.

 

시스템 에러가 발생할 수도 있고, 컴퓨터가 부서질 수도 있으며, 심지어 핵 폭발이 일어날지도 모른다.

 

 

이러한 이유에서 print문은 순수함수가 아닙니다.

 

 

순수함수는 InMemory상에서만 작동해야하는 함수로, I/O를 거치는 순간 순수함수가 아니게 됩니다.

그리고 항상, 언제나, 같은 인자가 들어왔을 때 같은 값을 반환해야합니다.

 

 

 

* 29CM 과제전형

며칠전에 지원한 29CM 서류 전형을 통과해서 과제전형을 시작했습니다.

 

Gradle자바로 작성하고 있는데, 내일 스프링으로 옮겨갈 생각입니다.

try-catch로 에러처리하다가는 개발이 아니라 오류핸들링이 될거 같아요.

 

반응형