Butterfly는 내가 만들 언어 이름임.
목표: 수학적인 언어 만들기. 아마도 하스켈을 많이 본뜰 듯.
체계:
1. 모음
2. 클래스
3. 타입
4. 객체
1. 모음을 정의하는 법
collection <모음 이름>
{
<요소 선언들 및 요소 정의들>
}
- C++의 네임스페이스와 비슷. collection1::element1으로 접근 가능.
2. 클래스를 정의하는 법
<클래스 이름> <옵션: 상속 클래스들>
{
<메소드 선언들 및 메소드 정의들>
}
- 임의의 타입에 대하여 클래스에서 정의되지 않은 모든 메소드가 선언되면 그 타입은 클래스의 원소로 간주됨.
- object.method는 method object로 바뀜.
예)
arithmetic
{
a: default => plus: a -> a-> a. /* 여기서 a는 타입변수 */
}
3.plus 4은 int::plus 3 4로 바뀜.
- x: S는 x가 S의 원소임을 나타냄.
3. 타입의 정의
set <옵션: 타입변수 선언> <타입> = <생성자 정의>; ...; <생성자 정의>.
또는
type <타입> = <기존의 타입을 이용한 새로운 타입>.
4. 객체: 아마도 함수.
object <객체이름> : <타입>
{
<내용: 함수 정의(예: 패턴 매칭, 람다식 등) 및 서브 함수 정의>
}
- 서브 함수는 function::sub로 다른 함수에서 사용 가능.
알듯하면서 하나도 모르겠다 - dc App
그냥 대충 적어본 거에요 저만의 언어를