느릅나무 1일차

2951 단어 elmfunctionalwebdev
어제 Elm에서 함수형 프로그래밍을 배우기 시작했고 재미있었습니다. Lisp 및 Haskell로 학습을 시도했지만 많은 진전을 이루지 못했습니다. Elm과 함께 하기로 결정했고 더 쉽고 더 좋았습니다.

함수형 프로그래밍으로 전환하는 데 있어 가장 어려운 부분은 결과로 평가되는 표현식이 되는 모든 것에 대해 머리를 감싸는 것입니다.

조건부



예를 들어 조건문의 개념을 생각해 보십시오. Javascript 영역에서 조건문은 명령문이지만 Elm에서는 조건문이 표현식입니다. 이는 Elm의 조건문이 값으로 확인(평가?)되어야 하므로 else 블록도 있어야 함을 의미합니다. 어떤 의미에서 Richard Feldman이 설명했듯이 elm의 조건은 Javascript의 삼항 연산자로 더 잘 생각됩니다. 조건은 표현식이고 값으로 평가되어야 하므로 else 블록을 정의해야 합니다.

따라서 Elm의 이 코드 블록은 다음과 같습니다.

pluralise singular plural quantity = 
  if quantity == 1 then
    singular
  else 
    plural


JS에서 이것은 동일합니다.

const pluralize = (singular, plural, quantity) => quantity === 1 ? singular : plural;


그러나 동일한 결과를 달성하더라도 이것과 정확히 동일하지는 않습니다.

const pluralize = (singular, plural, quantity) => {
  if (quantity === 1) return singular;
  return plural;
};


위의 코드에서 else 블록을 생략할 수 있기 때문에 코드는 여전히 컴파일되고 나중에 런타임 예외가 발생합니다. Elm은 런타임 예외에 눈살을 찌푸립니다. 그것은 그 가능성을 허용하지 않습니다.

괄호



Elm에서 괄호의 역할은 흥미롭습니다. 여기에서는 Richard Feldman을 인용하겠습니다.

Parenthesis disambiguate between nested expressions.



Javascript에서 괄호는 모호함을 없애는 데 사용할 수 있지만 함수 호출, 함수 생성, 루프 및 if 문에 대한 조건부 등을 비롯한 다른 목적으로도 사용되기 때문에 흥미롭습니다.

Elm에서는 Math에서 수행하는 작업을 수행합니다. 중첩된 표현식 간의 모호성을 제거합니다.

어제는 여기까지입니다. 오늘 엘름에서 배운 내용은 나중에 쓰겠습니다.

좋은 웹페이지 즐겨찾기