proc `+`(a: int, b: int): int = return a + b echo 2 + 5


기본 연산자 재정의로 무한 재귀에 빠지게 만든다.

정신나간 언어...


Forth도 재정의 할 수 있는데 재귀는 안한다. (애초에 얘는 재귀하려면 recurse 해줘야한다.)



proc `^@^`(a: int, b: int): int = return a + b echo 2 ^@^ 5


이상한 연산자 만들기

근데 몇몇 케이스 제외하면 특정 특수문자만 가능하더라.


proc bar(x: int): int = return x * x var a = 10 foo bar a foo(bar(a)) a.bar().foo() a.bar.foo


호출 문법설탕. 섞어써도 됨.


var s: int `=`(s, 7.`+`(8))


연산자 함수로 호출하기.


var this_is_snake_case = "snake_case" var thisIsCamelCase = "camelCase" echo thisIsSnakeCase echo thisIs_SnakeCase echo thisISSNAKE_case echo this_is_camel_case echo thisisc_amelcase echo tHISISCAMELCASE


케이스 무시하기.

맨 앞이 소문자라면, 본인 원하는 케이스로 호출하면 됨. 표준 라이브러리도 해당.