5분 안에 ReasonML 및 Rescript

이 언어는 무엇에 관한 것입니까?



JavaScript(또는 OCaml)로 컴파일되는 기능적 언어입니다. avo.app 에서 널리 사용합니다.

ReasonML에서 ML이란 무엇입니까?



요즘 ML은 일반적으로 Machine Learning의 약자이지만 옛날에는 ReasonML 또는 Reason Meta Language의 조상인 "Meta Language"라는 프로그래밍 언어가 있었습니다.

이름을 바꾸는 이유는 무엇입니까?



ReasonML은 JS와 OCaml 모두 호환되지만 최근에는 JS 생태계에서 주로 사용된다.
Rescript는 Reason에서 JS 관련 항목을 가져오고 OCaml 지원에 의해 제한되지 않습니다.

좋은 점은 무엇입니까?


불변성



모든 참조는 실제로 상수입니다. 섀도잉이 널리 사용됩니다. 표준 라이브러리 함수는 변경되지 않으며 변경 사항이 있는 경우 새 인스턴스를 생성합니다. 필요한 경우 변경 가능한 참조를 생성하는 해결 방법이 있지만 충분히 고려하지 않아도 됩니다.

파이핑 및 카레링



Rescript는 객체에 대한 메서드가 없는 함수형 언어이지만 다음과 같이 파이핑 및 커링과 함께 친숙한 방식으로 함수를 호출하고 연결할 수 있습니다.myList->List.length또는myArray->Array.map(item => item * 2)

사운드 유형 시스템 및 유형 추론



이것이 아마도 Rescript를 선택하는 주된 이유일 것입니다. 강력한 유형 시스템과 강력한 유형 추론이 있으므로 유형을 명시적으로 정의할 필요가 거의 없지만 컴파일러는 항상 유형이 무엇인지 알고 있습니다.

폴더 요구 사항 및 가져오기 없음



이것은 많은 언어의 경우이지만 Java에서 나온 저는 이 기능에 정말 감사합니다. 그리고 Javascript 개발자는 가져오기가 없는 것을 좋아합니다!

대수 데이터 유형의 완전한 지원



사용자 정의 유형으로 모든 도메인을 설명하는 것은 매우 쉽습니다.type eventId = string와 같은 유형 별칭 또는 다음과 같은 복합 유형을 만들 수 있습니다.

type event = {
  id: eventId,
  name: string,
  uniqueName: option<string>,
  description: string,
  properties: list<property>,
  types: list<eventType>
}


언어의 주요 구성은 패턴 일치에 최적화된 철저한 스위치입니다.



여기에는 variant라고 하는 권한 있는 열거형이 수반됩니다. 덕 타이핑이 있거나 없는 변형 옵션이 있습니다. Better to see it in action

간단한 구문



이미 다른 프로그래밍 언어를 알고 있다면 몇 시간만 학습하면 코드 작성을 시작할 수 있습니다.

비교적 안전한 리팩토링



엄격한 유형 시스템과 철저한 스위치의 조합으로 컴파일러는 컴파일 시간에 버그를 찾는 데 매우 효율적입니다.

뭐가 그렇게 좋지 않니?



간단한 구문은 장황함을 의미합니다



예를 들어 선택적 상수의 래핑을 풀려면 일부 다른 언어에서 maybeSomething->Option.map(something -> something->performOperation) 대신 maybeSomething?.performOperation()를 작성해야 합니다.

함수를 사용하기 전에 정의해야 합니다.



예, 좋은 옛날 C처럼.

여전히 유형 관련 버그가 있을 수 있습니다.



유형 버그의 99%를 잡아내는 강력한 컴파일러를 갖는 것은 너무 편안할 수 있으며 컴파일러 검사를 통과하는 가끔 발생하는 버그를 놓치기가 더 쉬워집니다. 😉

보너스



ReasonML 에 대한 공개 코드 스타일 가이드를 유지 관리하고 있습니다. 기여를 환영합니다!

좋은 웹페이지 즐겨찾기