애플리케이션의 의도를 간결하고 일관된 문법으로 표현하는 프로그래밍 언어.
토파즈 살펴보기
먼저 토파즈가 어떤 언어이고 어디에 알맞은지 확인하세요. 이어서 학습 경로를 따라가고, 문법을 찾아보고, 알맞은 도구와 실행 대상을 고르세요.
지금 실행하면 아래와 같은 결과를 얻습니다.
function clean(words: Array<string>) -> Array<string> {
return filter(words, (w: string) => w != "")
}
function shout(words: Array<string>) -> Array<string> {
return map(words, (w: string) => w + "!")
}
let line = ["one", "", "way", "", "to", "say", "it"]
|> clean
|> shout
print("{line}")[one!, way!, to!, say!, it!]
방금 쓴 파일을 그대로 실행한다. 같은 파일에서 네이티브 바이너리와 Python 번들과 웹 패키지가 나오고, 선택은 명령 하나에 붙는 플래그다.
자주 쓰는 개념마다 정본 표기가 하나이고, 언어가 그 선을 지킨다. 사람이 쓴 파일과 코드 생성 도구가 쓴 파일이 같은 모양으로 나온다.
복구 가능한 실패는 Result로 흐르고 예상된 부재는 Option으로 흐른다. 정리 코드는 모든 종료 경로에서 실행되고, 검사기는 match에서 빠뜨린 경우를 짚어 준다.
식별자는 렉서 단계부터 유니코드이고, 입력한 이름을 뒤에서 고쳐 쓰는 단계가 없다. 사용자는 평범한 변수이며, 모듈 해석기는 혼동을 부르는 이름을 거절한다.
표면이 작은 것이 곧 제품이어서 작게 유지한다. 사람이 읽는 문법과 코드 생성 도구가 쓰는 문법이 같다.
사람을 위한 명세서이자, 컴퓨터가 실행하는 코드.
토파즈는 애플리케이션의 의도를 간결하게 표현하는 유니코드 우선 언어입니다. 사람과 코드 생성 도구가 같은 문법을 사용하며, 작성한 프로그램을 바로 실행하거나 Rust·Python·웹 산출물로 만들 수 있습니다.
철학 읽기 →function discount(customer: { tier: string, years: int }) -> float {
return match customer {
case { tier: "vip", years } if years > 5 => 0.3
case { tier: "vip" } => 0.2
case { years } if years > 1 => 0.1
case _ => 0.0
}
}
print("{discount({ tier: "vip", years: 7 })}")
print("{discount({ tier: "new", years: 0 })}")0.3 0.0
let result = concurrent {
answer: 6 * 7
status: "ready"
}
defer print("cleaned up")
print("{result.answer} {result.status}")42 ready cleaned up
function fibonacci(n: int) -> int {
return match n {
case 0 => 0
case 1 => 1
case _ => fibonacci(n - 1) + fibonacci(n - 2)
}
}
let series = map(0..<10, fibonacci)
print("{series}")[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
function clean(words: Array<string>) -> Array<string> {
return filter(words, (w: string) => w != "")
}
function shout(words: Array<string>) -> Array<string> {
return map(words, (w: string) => w + "!")
}
let line = ["one", "", "way", "", "to", "say", "it"]
|> clean
|> shout
print("{line}")[one!, way!, to!, say!, it!]
function 인사하기(이름: string) -> string {
return "안녕하세요, {이름}님!"
}
print(인사하기("토파즈"))안녕하세요, 토파즈님!
function greet(name: string) -> string {
return "Hello, {name}!"
}
print(greet("Topaz"))Hello, Topaz!
function привет(имя: string) -> string {
return "Привет, {имя}!"
}
print(привет("Топаз"))Привет, Топаз!