CakeML/cakeml

Support custom failure exceptions in the translator

開放

#181 建立於 2016年11月24日

 (1 則留言) (0 個反應) (0 位負責人)Standard ML (98 個分叉)auto 404
help wantedlow efforttranslator

倉庫指標

星標
 (1,169 顆星)
PR 合併指標
 (PR 指標待抓取)

描述

Currently, if you translate something with a side-condition from ARB, the translator produces the code raise Bind. It would be nice to tweak this a little to allow an arbitrary exception. For example:

val _ = register_exn ``Size``; (* made this up... not sure how it should work *)
val sub_def = Define`sub i ls = if i < LENGTH ls then EL i ls else FAIL Size ARB`;

to produce code that calls raise Size rather than raise Bind. This requires the translator to support defining exceptions too.

For sophisticated use of exceptions, one must use CF, but for exceptions that correspond to side-conditions we expect to always be true, it would be nicer to just use the translator.

貢獻者指南