slow.monster

STUDIO HAZE · jeniapp

Topaz source

Open by house policy. Topaz is our own language.

Topaz 5.20.2 · 63 files

apps/circuit/core/gate.tpz

Topaz · 1376 B · Original file

1// 논리 게이트. NAND 진리표 하나만 원시 게이트로 두고 나머지 게이트는 모두 NAND 를 조립해 만듭니다.
2// 입력은 bool 신호 한두 개이고 출력은 bool 신호 하나입니다.
3// 같은 입력이면 늘 같은 신호가 나옵니다. 신호 경로에 산술을 쓰지 않습니다.
4// 노드 종류를 고르거나 회로를 평가하지 않습니다. 그 일은 core.netlist 와 core.sim 이 합니다.
5// Logic gates: NAND is the only primitive truth table and every other gate is composed from it.
7export function 부정논리곱(가: bool, 나: bool) -> bool {
8 if 가 && 나 { false } else { true }
9}
11export function 부정(가: bool) -> bool { 부정논리곱(가, 가) }
13export function 논리곱(가: bool, 나: bool) -> bool { 부정(부정논리곱(가, 나)) }
15export function 논리합(가: bool, 나: bool) -> bool { 부정논리곱(부정(가), 부정(나)) }
17export function 부정논리합(가: bool, 나: bool) -> bool { 부정(논리합(가, 나)) }
19// NAND 네 개로 짜는 표준 구성입니다.
20export function 배타적논리합(가: bool, 나: bool) -> bool {
21 let 가운데 = 부정논리곱(가, 나)
22 부정논리곱(부정논리곱(가, 가운데), 부정논리곱(나, 가운데))
25export function 배타적부정논리합(가: bool, 나: bool) -> bool { 부정(배타적논리합(가, 나)) }

SHA256 da1ba7f40c50ddfefe8b7e615160ac64ecc9991dd0bfe16143e233bda632a26f