👨💻📱✍️🎢314 나의 2022년도는 어땠을까? 이 글을 작성하고 있는 시점에서 이제 2022년도 6시간이 채 남지 않았네요. 올 한해는 정말 정말 정신없이 보낸 것 같습니다. 여러분은 어떠신가요? 이번년도에 이룬 것들과 아쉬웠던 점들을 되짚어보면 다가올 2023년도를 더욱 의미있게 보낼 수 있을 것 같아서 연말정산 회고를 해보려고 합니다. 😄 📌 올 한해의 키워드 저에게 2022년은 다음 3가지 키워드로 요약이 가능할 것 같습니다. #커리어 , #여행 , #블로그 이제부터 각각의 키워드들에 대한 이야기들을 풀어보며 올 한해동안 저에게 어떤 일들이 있었는지 경험을 나누어볼게요. 👨💻 커리어(이직) 주니어 개발자로서 성장에 목마름을 매번 느끼고 있었는데, 좋은 기회가 생겨서 올해 5월부터 작년부터 몸담았던 회사를 떠나 새로운 터전으로 옮기게 되었어요... 2022. 12. 31. [Haskell Tutorial] Data Type 📌 data 타입 Haskell 에서 타입을 정의하는 또 다른 방법 중 하나는 data 입니다. data = | | | ... newtype 과 다르게 여러 타입인자를 받을 수 있고, 여러 constructor 를 하나의 타입에 매칭시킬 수 있다는 특징을 가지고 있습니다. constructor 뒤에 타입인자는 0개 이상을 정의하면 됩니다. 다음은 data 의 예시입니다. data Bool = True | False 어째 형태가 우리가 흔히 사용하는 enum 과 많이 닮아있지않나요? 또다른 예시를 살펴보겠습니다. data Person = Person String Int -- 이름과 나이를 인자로 받는 Person 타입 위는 이름과 나이를 인자로 받는 Person 타입을 정의한 것입니다. 그런데 위와 같이 .. 2022. 12. 31. [Haskell Tutorial] Recursion 📌 반복문 대신 재귀로 Haskell 에서는 반복을 수행하기 위해 loop 를 순회하는 것이 아니라 재귀 를 활용합니다. 📌 Tail Call Elimination 일반적으로 프로그래밍 언어에서 재귀호출 은 콜스택을 쌓기 때문에 메모리 이슈가 발생할 가능성이 있습니다. 하지만 Haskell 과 같은 함수형 언어에서는 Tail-Call Elimination 를 통해 최적화를 수행합니다. 📌 Lazy Evaluation Haskell 은 지연 평가를 통해 실행됩니다. 따라서 값이 필요한 시점에 평가를 하며 필요하지 않다면 평가하지 않습니다. 📌 예제로 익히기 maximum 은 리스트의 요소 중 가장 큰 값을 반환하는 함수입니다. maximum' [] = error "maximum of empty list" .. 2022. 12. 31. [Haskell Tutorial] High Order Function 이번 포스트는 http://learnyouahaskell.com/higher-order-functions 에 근거하고 있습니다. 📌 고차함수 (High Order Function) 고차함수 는 함수를 파라미터로 넘겨줄 수 있고, 반환값으로도 사용할 수 있습니다. 한마디로 함수를 값으로 취급할 수 있다는 것을 의미합니다. 📌 커링 (Currying) Haskell 다중인자 함수의 정체 하스켈의 함수는 하나의 인자만 받을 수 있도록 되어있는데, 어떻게 여러개의 인자를 받는 함수를 구현할 수 있는 것일까요? 두 인자를 받아 큰 값을 반환하는 함수 max 는 다음과 같이 두 단계로 나눠볼 수 있습니다. ghci> max 4 20 20 {- ✅ 위 표현식은 다음과 같이 분리할 수 있다. -} ghci> maxVa.. 2022. 12. 31. [Haskell Tutorial] Module 📌 Module 모듈이란 우리가 작성한 파일 단위의 API (함수 및 타입들) 뭉치입니다. Haskell 에서는 각각의 파일이 하나의 모듈입니다. 모듈은 영문대문자로 시작하는 이름을 가지며(Html.hs), 모듈을 정의하는 쪽에서 외부로 공개하기를 원하는 API 들을 지정할 수 있습니다. -- Html.hs module Html ( Html , Title , Structure , html_ , p_ , h1_ , append_ , render ) where -- ... 각각의 API 들에 대한 구현부 📌 Internal Module 앞서 module 을 export 한 방식은 private 한 기능들에 접근하지 못한다는 특징을 가지고 있습니다. Haskell 에서는 이러한 경우 module 에 모두 접근.. 2022. 11. 28. [Haskell Tutorial] Type 📌 타입추론 Haskell 은 타입 추론이 가능하지만 보통 명시적으로 타입을 명시하는 것이 미래의 나와 다른 이들을 위해 더 나은 선택입니다. 타입은 식별자 위에 :: 와 함께 명시합니다. title_ :: String -> String 위 타입은 String 을 인자로 받아 String 을 반환하는 함수를 의미하는 것이죠. 📌 Haskell 의 함수는 일급 클래스다. 사실 앞선 모든 예제에서 2개 이상의 인자를 받는 함수들을 정의했지만 사실 Haskell 에서 모든 함수는 하나의 인자를 받도록 되어있습니다. makeHtml :: String -> String -> String 이전에 작성한 makeHtml 은 두개의 String 인자를 받아 하나의 String 을 반환하도록 되어있었는데, 사실 이는 다.. 2022. 11. 28. 이전 1 ··· 5 6 7 8 9 10 11 ··· 53 다음