➤ projectdiscovery➤ Remix➤ Rescript➤ Purescript➤ npm➤ Cloudflare➤ React➤ Next.js➤ GO➤ Hyper-V➤ Tibero➤ Git➤ Algorithms, 2020년
퓨어스크립트 북 챕터6 가볍게 읽어보는 메모장
March 4, 2022가볍게 읽어보기!
Project Setup
- Maybe
- optional values
- Tuple
- pairs of values
- Either
- disjoint unions
- https://en.wikipedia.org/wiki/Disjoint_union
- 분리합집합
- 교집합이 존재하지 않는 둘 이상의 집합
- String
- Function
Show Me!
- 타입 클래스 정의
class Show a where
show :: a -> String
- Orphan Instances
- 고아 인스턴스?
- 외부에 정의된 타입 클래스 인스턴스를 칭함
- 퓨어스크립트에선 이를 금지
- 인스턴스의 전역 고유성이 보장된다.
- 얼마 전에 rescript에서 두 개의 모듈이 이름 겹쳐서 에러났는데 그런 비슷한건가..?
Common Type Classes
Eq
:==
Ord
: 두 값 비교Field
: 숫자 연산- 슈퍼 클래스로 구성
Semigroups
: 두 값 결합<>
연결 연산자append
Monoids
:mempty
라고 불리는 빈 값 컨셉으로Semigroups
을 확장?- 문자열과 배열은 모노이드의 간단한 예
foldable
:fold
의 소스로 사용할 수 있는 유형 생성자
Type Class Constraints
- 함수의 타입은 타입 클래스를 사용하여 제한할 수 있음
=>
: 제약 조건 지정
Instance Dependencies
- 타입 클래스 인스턴스가 다른 타입 클래스 인스턴스에 의존 가능
instance showEither :: (Show a, Show b) => Show (Either a b) where
...
Multi Parameter Type Classes
- 타입 클래스는 0개 이상의 매개변수를 가질 수 있음
Functional Dependencies
- 다중 매개변수를 가지면 타입 유추에 문제가 생길 수 도 있음
- 타입 클래스 정의에 힌트를 추가해 컴파일러를 돕자
- Functional Dependency라고 함
class Stream stream element | stream -> element where
uncons :: stream -> Maybe { head :: element, tail :: stream }
Nullary Type Classes
- 인자가 0개인 타입 클래스는
assertions
Superclasses
- 상속의 개념?