본문 바로가기

전체 글

(168)
[Scala] 순수함수와 참조투명성, 치환모형 순수함수 : 부수 효과가 없는 것 부수효과 : 함수 외부세계와의 일정한 상호작용이 있는것 class Gift { def buyGift(cash:Cash) : MacBook = { val MacBook = new Mac() cash.charge(MacBook.price) // 외부세계와의 상호작용이 있다. MacBook } } 참조투명성: 만일 모든 프로그램 p에 대해 표현식 e의 모든 출현을 e의 평가 결과로 치환해도 p의 의미에 아무 영향도 없다면 그 표현식 e는 참조 투명성이 있다. 그리고 이 참조에 투명한 모든 x에 대해 f(x)가 참조에 투명하면 함수 f는 순수하다. 예를 들어 '덧셈연산'은 순수함수다. 2 + 3 = 5 라는 표현식에 대해 프로그램 전체에 산재되어있는 2+3을 5로 바꿔도 프로그..
redux-saga와 axios를 쓸 때 response가 null이 되는 현상 export const getPostsSortByLatest = ({ postsPerPage, pageNumber }) => client.get(`/boards/sort-by/create_datetime?page=${pageNumber}&page_size=${postsPerPage}`); export const getPostsSortByLatest = ({ postsPerPage, pageNumber }) => { client.get(`/boards/sort-by/create_datetime?page=${pageNumber}&page_size=${postsPerPage}`)} 위의 두 함수는 확연히 다르다. 문법적으로 {} 이거 하나 차이인데... 결과는 많이 다르다. 위의 함수를 호출하면 null이 나..
[Scala] 함수 컴비네이터 컴비네이터란? 컬렉션을 변형한 후 동일한 자료형의 컬렉션을 반환하는 메소드 map(), foreach() map()은 function을 이용해서 해당 컬렉션의 원소들을 변형시킨 후 새롭게 컬렉션을 만들어서 반환한다. val list = List(2,4,6) val minus_list = list.map(elem => elem - 1) println(list) // Output : List(2,4,6) println(minus_list) // Output : List(1,3,5)foreach()는 map()과 마찬가지로 함수를 이용하지만 반환값이 없다. var list = List(2,4,6) list.foreach(elem => println(elem)) // Output // 2 // 4 // 6fil..