我有需要部分擴展方案代碼而沒有完全評估。我想一個函數,它是這樣的:在方案中部分擴展代碼
'(let [(my-number 8)
(my-function (lambda args 'value))]
(cond
((> my-number 10) (my-function 'x 'y 'z))
((= my-number 10) (my-function 'a 'b 'c))
(else my-number)))
,並把它變成這樣:
'(cond
((> 8 10) 'value)
((= 8 10) 'value)
(else 8))
換句話說,我想要的東西,擴展的定義,讓,letrecs等不做任何危險的評估。我打算對一些不同的方案代碼做一些靜態分析,如果所有代碼都處於相對規範化的形式,那將會很好。我希望儘可能多地進行擴展而不會冒任何I/O風險。
這需要什麼基本上是寫一個計劃評估。我寧願不。有沒有任何計劃功能可以幫助我開箱即用?
我應該說明我無法控制輸入。我現在得到了輸入,我必須分析它;我希望在進行分析之前將其歸一化。這就是我想在這裏實現的。我無法手工重寫輸入以使生活更輕鬆。
我正在使用球拍,但不幸的是我的代碼必須使用#lang scheme
運行。
什麼是你的「危險評估」? –
突變全局範圍,休眠,分叉或以其他方式執行I/O操作。 我想擴展用戶的代碼塊中的用戶定義,包括lambda表達式,定義,讓和定義/讓家庭中的任何東西。如果可能的話,我想讓宏也被擴展。理想情況下,我想在不修改狀態或執行I/O的情況下進行所有語法擴展,但白名單可能就足夠了。你知道完整的類似定義和類似函數的列表嗎? – So8res
如果你可以做'靜態分析',那麼你可以做'部分評估'... – GoZoner