[Haskell] 고차원 함수 - 람다, 폴드, 스캔, $, 합성함수
·
devlog/programming language
람다 Lambda 단 한번만 함수가 필요할 때 사용하는 익명의 함수. 람다는 표현식이다. 선언방법 \ 로 선언 그 뒤에는 함수의 매개변수를 쓴다. (하나 이상의 매개변수는 공백으로 구분한다) -> 뒤에는 함수의 내용이 온다. 괄호로 람다를 감싸는 것이 일반적이다. where 절로 바인딩해서 표현했던 방식 대신 람다로 변경한 numLongChains 예시 numLongChains :: Int numLongChains = length (filter (\xs -> length xs > 15) (map chain [1..100])) 람다보다는..? 부분적 어플리케이션이 람다보다 가독성이 좋은 경우도 있다. map (+3) [1,6,3,2] // 부분적인 어플리케이션 map (\x -> x + 3) [1,6,3,..
[Hashkell] 하스켈이란? 하스켈 설치방법, 실행방법
·
devlog/programming language
하스켈 이란? 순수한 함수형 프로그래밍 언어이다. 함수형 프로그래밍 언어는 컴퓨터에게 해야하는 작업을 알려주는 것이 아닌 (명령형 프로그래밍 언어), 작업이 무엇인지를 알려주는 언어이다. 예를 들면 팩토리얼은 1부터 N까지의 숫자를 모두 곱하는 작업이라고 알려주는 것처럼, 이러한 작업들을 함수로 표현할 수 있다. 함수형 프로그래밍에서는 변수의 값을 변경할 수 없다. 그렇기 때문에, 함수가 하는 일은 주어진 작업을 계산하고 그 결과를 반환하는 일만 하면 된다. 절차형 프로그래밍 언어처럼 변수의 값을 변경할 수 없고, 함수는 결과를 반환하는 일만 하면 되므로 주어진 매개변수가 동일하다면 동일한 결과를 보장하는 특징도 가진다. (=참조 투명성) 하스켈은 느긋한 언어이다. 이것은 함수의 결과값이 표현되어야 할때..