뉴런에서 힌트를 얻어 자료형 Predicate의 구조를 고안해 보았다:
출력가지, 입력가지[0], ..., 입력가지[n], n ≥ 0.
가지는 돌기들의 집합- 공집합일 수 있음 -이며,
돌기와 돌기는 자료형 Formula- Predicate와 Value의 결합 -의 객체로 통신한다.
저번에 말했듯이 자료형 Value는 생성자와 Value의 결합이다.
다음 Butterfly 언어의 코드를 보자.
1 Nat
2 {
3 zero() = "z".
4 succ(n: Nat) = "s" * 'n'.
5 }
6 Main(Nat).
7 / Main(zero()).
8 Main(n) / Main(succ(n)).
7번 줄은 돌기가 없는 입력가지[0]를 만들며,
8번 줄은 돌기가 하나만 있는 입력가지[1]를 만든다.
각 입력가지는 그것의 돌기가 모두 활성화될 때에만 출력가지를 활성화시키며,
출력가지가 활성화되면 그것의 모든 돌기는 신경전달물질- 비유임 -을 방출한다.
즉 뉴런 Main()은, 7번 줄에 의하여 매 턴마다 Main(zero())를 방출하며,
8번 줄에 의하여 Main(n)이 참이면 다음 턴에 Main(succ(n))을 방출한다,
단 여기서 n은 값으로 치환되어야 한다.
따라서 처음 턴이 종료될 때 Main("z")가 참임을 알 수 있고,
두번째 턴이 종료될 때 Main("z")와 Main("sz")가 참임을 알 수 있고,
세번째 턴이 종료될 때 Main("z")와 Main("ssz")가 참임을 알 수 있다.
지금까지 Butterfly의 인터프리터가 작동하는 원리를 설명하였다.
젠장할. 이렇게 하면 안 되네 ㅠㅠ