Friday, February 09, 2007

CAL, haskell(like) on JVM

CAL เป็นส่วนหนึ่งของ Open Quark Framework for Java
มี syntax และ feature ไกล้เคียงกับ haskell มาก
แต่ compile เป็น bytecode และ run บน java virtual machine

code ข้างล่างเป็นตัวอย่างการแปลง array เป็น java ArrayList
outputListWith :: [a] -> (a -> JObject) -> JList;
public outputListWith !list f =
let
javaList :: JList;
javaList = jArrayList_new;
outputListWithHelper :: [a] -> (a -> JObject) -> JList ->
JList;
outputListWithHelper !list elementMappingFunction !javaList =
case list of
[] -> javaList;
x : xs ->
if (jList_add javaList (elementMappingFunction x)) then
outputListWithHelper xs elementMappingFunction
javaList
else
error "Adding an element to a Java list failed.";
;
in
outputListWithHelper list f javaList;

ส่วน Quark Framework ยังอ่านไม่เข้าใจ
ดูเหมือนจะเป็นชุดเครื่องมือที่มุ่งเรื่อง reuse business logic
โดย define code unit เล็กๆที่เรียกว่า Gem (เขียนโดย CAL)
จากนั้นก็สามารถนำ Gem พวกนี้มาต่อๆกันเป็นสายของ process ได้

Related link from Roti

No comments: