@domatdo도막도 수반 논리(Adjoint Logic)에 기반한 언어간 상호운용성(interoperability)입니다. CBPV를 이 관점에서 이해하면 계산 언어와 값 언어간의 상호운용성을 특정한 방식으로 구현했다고 볼 수 있습니다. CBPV가 수반 논리보다는 제한적인 대신 그 제한이 기계 수준에서 이해하는데는 유용한 점이 있다고 비교해 볼 수 있겠네요.
@ailrunAilrun (UTC-5/-4) 아하. CBPV의 thunk와 force를 일반화하면 두 언어 사이에서 항을 변환하는 사상을 떠올릴 수 있겠네요. 메타프로그래밍 관점에서 생각하면 항을 메타 언어의 데이터로 바꾸는 생성자(lisp의 quote 같은)와 메타 언어의 데이터를 대상 언어의 항으로 되돌리는 eval 생성자를 생각할 수도 있겠어요. 더 흥미로워지는데요?
If you have a fediverse account, you can reply to this note from your own instance. Search https://hackers.pub/ap/notes/01963eea-cb28-7129-b169-57314dccfe31 on your instance and reply to it.
@ailrunAilrun (UTC-5/-4) 생각해보면 return도 두 언어를 오가는 대응에 해당하네요. 모든 값을 계산으로 바꾼다는 점에서 force보다도 더 thunk의 짝이 되기 좋아보이나 싶지만 조금만 더 생각해보면 둘을 합성해서 항등 사상을 얻을 수가 없으니 아주 잘 어울리는 한 쌍은 못 되는군요. 뭔가 to의 역할을 잘 생각해보면 보이는 게 있을 거 같은데… 고민해봐야겠어요.