@@ -0,0 +1,48 @@
2+var Foriegn = function() {
3+ var JavaScript = function() {
4+ function castJSNumberToFloat(n) { return n; }
5+ function castFloatToJSNumber(n) { return n; }
7+ function castJSNumberToInt(n) { return ~~n; }
8+ function castIntToJSNumber(n) { return n; }
10+ var castJSElementToElement = Element.jsElement;
11+ function castElementToJSElement(elem) { return elem; }
13+ function castJSArrayToList(arr) {
15+ for (var i = arr.length; i--; ) {
16+ list = [ "Cons", arr[i], list ];
20+ function castListToJSArray(list) {
22+ while (list[0] === "Cons") {
29+ var castJSStringToString = castJSArrayToList
30+ function castStringToJSString(str) {
31+ if (typeof str === "string") return str;
32+ return castListToJSArray(str).join('');
35+ return {castJSNumberToFloat:castJSNumberToFloat,
36+ castFloatToJSNumber:castFloatToJSNumber,
37+ castJSNumberToInt:castJSNumberToInt,
38+ castIntToJSNumber:castIntToJSNumber,
39+ castJSElementToElement:castJSElementToElement,
40+ castElementToJSElement:castElementToJSElement,
41+ castJSArrayToList:castJSArrayToList,
42+ castListToJSArray:castListToJSArray,
43+ castJSStringToString:castJSStringToString,
44+ castStringToJSString:castStringToJSString
47+ return {JavaScript:JavaScript};