Skip to content

Language Tour

kimjooyoon edited this page Oct 4, 2026 · 8 revisions

언어 둘러보기

업데이트: 2026-10-04.

Gooo는 대상과 작업의 의미를 선언하고, 그 선언에서 구조와 계산 바디를 생성하는 경로를 제공합니다. 선언은 조립 설계도이고 안정적 ID는 부품의 이름표 역할을 합니다.

Entity와 안정적 ID

entity Order id "billing://entity/order"

Order는 읽기 쉬운 이름입니다. billing://entity/order는 참조와 변경 추적에 쓰는 안정적 정체성입니다. 표시 이름이 바뀌어도 같은 대상을 추적할 수 있어야 합니다. 실제 주문 한 건의 생성은 실행 관측에서 기록합니다.

Activity와 입출력

activity PayOrder(Order, PaymentMethod) -> Payment

이 선언은 결제 작업이 주문과 결제 수단을 사용해 결제 결과를 만든다는 관계를 표현합니다. 컴파일러는 이를 의미 구조로 옮기고 Go 구조에 연결합니다. 외부 결제 호출은 구현 슬롯과 실행 계약에서 다룹니다.

입력 위치, 출력 관계와 연산 순서는 의미를 구성합니다. 정규화할 때도 이 구분을 보존합니다. 전체 결제 예제.

함수 바디: 조건, 변수와 대입

현재의 실험적 바디 경로는 computes 문자열을 파싱해 Go 함수를 만듭니다. 다음은 저장소 예제의 선언입니다.

entity Integer id "bodycodegen://entity/integer"

activity ClampBelowZero(Integer) -> Integer computes "let value = input\nvalue = input\nlet accepted = value >= 0\nif accepted { return value } else { return 0 }"

바디에서는 let으로 지역 변수를 만들고, 값을 대입하고, 조건문에서 분기해 return합니다. 새 배포의 조건문은 else 없이 다음 문장으로 이어갈 수 있습니다. Integer·Boolean·Text와 레코드 입력·결과, 순서가 있는 여러 입력을 다룹니다. 함수 호출·반복문·외부 효과는 다음 실행 범위 확장에 남아 있습니다. 원본과 실행 명령 · 여러 입력 · 기록값.

조립 계획에서 실제 로직 선택하기

여러 활동을 실행할 때는 bind Assemble.result -> Clamp.input처럼 결과와 입력을 명시적으로 연결합니다. body-compose는 각 본문을 실제 함수로 만들고 타입에 맞는 지역값으로 다음 함수에 전달합니다. 여러 시작 입력과 하나의 결과를 여러 활동에 전달하는 예제, 실제 값과 완전성 읽기는 조립한 활동 본문 연결·실행에 있습니다.

assembling을 활동에 붙이면 본문과 허용된 선택, 한영 지시, 유한 기대값을 한 선언에 함께 둡니다. 예를 들어 뺄셈의 순서를 선택할 수 있습니다.

activity Offset(Integer) -> Integer computes "return input - 2" assembling {
    choice "offset-order" operand_order at "0" intent "2에서 입력을 뺀다. Subtract input from two."
    case "-1" -> "3"
    case "4" -> "-2"
    attempts "2"
}

일반 생성 명령이 이 선언을 발견하고 타입이 정해진 경로를 탐색합니다. 모델을 생략하면 결정론적으로 진행하며, 선택 예시와 실제 실행 결과를 나누어 기록합니다. 문법·실행·관측 결과. 선택 후에는 computes가 현재 구현, baseline이 위치와 대안을 해석할 시작 본문, picked가 선택 경로를 담습니다. body-realize는 그 관계와 관측을 재구성해 다음 생성에 쓸 Gooo 파일을 저장합니다. 제공한 예시의 충족 수가 낮은 경우에도 그 수치와 분모를 함께 남깁니다.

Combined 예제의 원본은 first = input + 2, second = input * 2를 만들고 chosen = first로 시작합니다. 타입 계획에서 선택할 위치와 대안을 선언하면, 생성기는 허용된 변수 참조와 조건 분기를 조립합니다. 설치본에서 생성한 바디의 핵심은 다음과 같습니다. 전체 Go 파일에는 안정적 ID의 생성 영역 marker도 있습니다.

var first = (input + 2)
var second = (input * 2)
var chosen = second
if input < 0 {
    chosen = (chosen - 3)
} else {
    chosen = (chosen + 3)
}
return (chosen + (first + second))

조립 계획의 예시 입력은 -3, 0, 3이고 별도 실행 입력은 -4, 1, 4입니다. 별도 입력에서 각각 -21, 10, 25를 확인했습니다. Unrelated 활동은 이 조립 대상 밖에 있습니다. 전체 생성 파일과 기록은 공개 설치 관측에 있습니다.

이 예제는 모델 없이 선언된 경로와 예시를 탐색합니다. 한영 지시에서 두 연산의 순서를 판단하는 자체 모델은 별도 파일 예제로 연결합니다. 소스·계획·선택·실행을 각 기록에서 추적할 수 있습니다.

중간 표현과 작은 모델

여러 줄 바디를 백틱 안에 직접 쓰는 문법 수정 #1190도 main eb8477d5에 병합·설치했습니다. 기존 이중 따옴표 형식과 같은 해석값을 생성하며 줄바꿈과 역슬래시를 그대로 보존합니다. 정규 CI·증거를 독립 확인했고 설치본의 실제 모델·결정론 실행도 확인했습니다. 직접 작성하기 · 설치 상태.

IR은 원본을 컴파일러가 다루기 쉬운 구조로 옮긴 중간 표현입니다. 조건, 변수 참조, 대입 대상과 분기를 각각 조립 가능한 부품처럼 다룹니다.

실험적 경로 계획은 원래 바디와 허용된 대안을 연결합니다. 소형 모델은 이 대안의 조합에 순위를 주며, 컴파일러가 타입과 범위를 검사하고 예시의 동작을 평가합니다. 현재 자체 공유 모델 연구는 세 이진 결정, 여덟 후보의 정수 함수에서 진행합니다. 구체적인 조립 과정.

작업의 출처를 연결하는 관계

관계 읽는 법
used 작업이 어떤 입력을 사용했는가
wasGeneratedBy 결과가 어떤 작업에서 나왔는가
wasDerivedFrom 어떤 원본에서 파생되었는가
wasAssociatedWith 작업에 어떤 주체가 관여했는가

이 어휘는 W3C PROV-O를 참고합니다. Agent는 관여한 사람·서비스 같은 주체를 표현하며, 실제 인증과 실행 권한은 별도의 관측으로 연결합니다.

정책과 다음 작업

Gooo에는 정책의 상태·전이·사례·증거·판정을 다루는 경로도 있습니다. 반례에서 수정 후보를 만들고, 비교 결과를 기록하며, 선택된 정책을 다음 실행에 사용하는 실험으로 이어집니다. 고정 목표를 이용한 정책 선택에는 그 실험에 고정된 소스와 입력이 있습니다.

각 부분이 맡는 일

부분 역할
Gooo 선언 대상·관계·작업·계산·정책 의도
의미 IR 정규화된 구조와 의미 비교
모델과 경로 계획 허용된 조립 후보의 순위와 탐색
생성 Go 대상 언어의 구조와 지원되는 바디
구현 슬롯 외부 연동과 별도의 구현 로직
실행·관측 기록 입력·출력·출처·실패·미해결 항목

앞으로 자연어에서 계획을 발견하고 더 넓은 타입과 조합을 표현하는 방향으로 발전시키려 합니다. 각 기능은 실행 가능한 사례와 관측으로 연결합니다.

시작하기 · 사용 흐름 · 현재 상태

Gooo

배우기

직접 다뤄 보기

원리와 개발

공개 코드와 모델

Clone this wiki locally