<?xml version="1.0"?><?xml-stylesheet type="text/xsl" href="http://www.codeplex.com/rss.xsl"?><rss version="2.0"><channel><title>Kaleido</title><link>http://kaleido.codeplex.com/Project/ProjectRss.aspx</link><description>Kaleido is a sample programming language implemented with F&amp;#35;, Kaleido is a general-purpose, interpreted &amp;#34;toy&amp;#34; language that has blocks as first-class citizens and anonymous blocks &amp;#40;and hence, highe...</description><item><title>Source code checked in, #31678</title><link>http://kaleido.codeplex.com/SourceControl/changeset/view/31678</link><description>Finished removing ML compatibility warnings.</description><author>jolson88</author><pubDate>Mon, 28 Sep 2009 22:54:52 GMT</pubDate><guid isPermaLink="false">Source code checked in, #31678 20090928105452P</guid></item><item><title>Source code checked in, #31676</title><link>http://kaleido.codeplex.com/SourceControl/changeset/view/31676</link><description>Updated to F&amp;#35; May CTP &amp;#40;1.9.6.16&amp;#41;</description><author>jolson88</author><pubDate>Mon, 28 Sep 2009 22:27:09 GMT</pubDate><guid isPermaLink="false">Source code checked in, #31676 20090928102709P</guid></item><item><title>Updated Wiki: Home</title><link>http://kaleido.codeplex.com/Wiki/View.aspx?title=Home&amp;version=11</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;What is Kaleido?&lt;/h2&gt;
Kaleido is a sample programming language implemented with F&amp;#35;, Kaleido is a general-purpose, interpreted &amp;#34;toy&amp;#34; language that has blocks as first-class citizens and anonymous blocks &amp;#40;and hence, higher-order &amp;#34;functions&amp;#34; in a way&amp;#41;.&lt;br /&gt;&lt;br /&gt;Kaleido's main organization primitive is simply a block of code. The core concept really being the : (start block) and ; (end block) characters. Here's some sample Kaleido code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
Loan: (initialAmount)
    Amount = initialAmount
    
    TotalAfterFirstYear: (calculator)
        return calculator(Amount)
    ;
;

GenerateCalculator: (interest)
    return : (amount)
        return amount + (interest * amount)
    ;
;

loan = Loan(65000)
afterFirstYear = loan.TotalAfterFirstYear(GenerateCalculator(0.0525))
print(loan.Amount)
print(afterFirstYear)
&lt;/pre&gt;&lt;br /&gt;There are a couple of things to notice with this code:
&lt;ol&gt;&lt;li&gt;Use of Higher-Order &amp;quot;Functions&amp;quot; from the GenerateCalculator block that generates and returns a block that is then passed to another block&lt;/li&gt;
&lt;li&gt;Loan is used like we would normally expect an object to be used, with a &amp;quot;Property/Field&amp;quot; for Amount and a &amp;quot;Function&amp;quot; for TotalAfterFirstYear&lt;/li&gt;&lt;/ol&gt;

&lt;h2&gt;Why Kaleido?&lt;/h2&gt;
First of all, why the name &amp;quot;Kaleido&amp;quot;? Though I would love to take credit for the name, the idea came from my coworker &lt;a href="http://www.lostintangent.com" class="externalLink"&gt;Jonathan Carter&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt;. Since the language is primarily built around a &amp;quot;scope&amp;quot;, the name is a play off the word &amp;quot;Kaleidoscope&amp;quot;.&lt;br /&gt;&lt;br /&gt;Kaleido was started merely as a project in which to learn about language implementation and design (simply a fun and education project). I also wanted to use language implementation as a context in which to dig deeper and learn more about F#.&lt;br /&gt;&lt;br /&gt;I've always been intrigued by &amp;quot;elegant&amp;quot; programming languages that had minimal &amp;quot;primitives&amp;quot; or syntax built into the language (i.e. LISP/Smalltalk/Forth/etc.). In this vein, I wanted to see what I could try to do around removing a bunch of concepts we typically deal with today: private/protected/public scoping, &amp;quot;class&amp;quot; versus &amp;quot;function&amp;quot; objects and keywords, differing syntax between function definition and lambda definition, etc.&lt;br /&gt;
&lt;h2&gt;Implementation&lt;/h2&gt;
Currently, the Kaleido lexer and parser is automatically generated via the FsLex and FsYacc tools that are in the F# PowerPack. The main eval function that is the heart of the Kaleido language is only around 40-50 lines of F# code.&lt;br /&gt;
&lt;h2&gt;Dependencies&lt;/h2&gt;
Kaleido is built on the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en" class="externalLink"&gt;September 2008 CTP&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; of F# (1.9.6.2) and uses the F# project integration into Visual Studio 2008.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description><author>jolson88</author><pubDate>Thu, 16 Apr 2009 08:20:27 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090416082027A</guid></item><item><title>Updated Wiki: Home</title><link>http://kaleido.codeplex.com/Wiki/View.aspx?title=Home&amp;version=10</link><description>&lt;div class="wikidoc"&gt;&lt;h2&gt;What is Kaleido?&lt;/h2&gt;
A sample programming language implemented with F&amp;#35;, Kaleido is a general-purpose, interpreted &amp;#34;toy&amp;#34; language that has blocks as first-class citizens and anonymous blocks &amp;#40;and hence, higher-order &amp;#34;functions&amp;#34; in a way&amp;#41;.&lt;br /&gt;&lt;br /&gt;Kaleido's main organization primitive is simply a block of code. The core concept really being the : (start block) and ; (end block) characters. Here's some sample Kaleido code:&lt;br /&gt;&lt;br /&gt;&lt;pre&gt;
Loan: (initialAmount)
    Amount = initialAmount
    
    TotalAfterFirstYear: (calculator)
        return calculator(Amount)
    ;
;

GenerateCalculator: (interest)
    return : (amount)
        return amount + (interest * amount)
    ;
;

loan = Loan(65000)
afterFirstYear = loan.TotalAfterFirstYear(GenerateCalculator(0.0525))
print(loan.Amount)
print(afterFirstYear)
&lt;/pre&gt;&lt;br /&gt;There are a couple of things to notice with this code:
&lt;ol&gt;&lt;li&gt;Use of Higher-Order &amp;quot;Functions&amp;quot; from the GenerateCalculator block that generates and returns a block that is then passed to another block&lt;/li&gt;
&lt;li&gt;Loan is used like we would normally expect an object to be used, with a &amp;quot;Property/Field&amp;quot; for Amount and a &amp;quot;Function&amp;quot; for TotalAfterFirstYear&lt;/li&gt;&lt;/ol&gt;

&lt;h2&gt;Why Kaleido?&lt;/h2&gt;
Kaleido was started merely as a project in which to learn about language implementation and design (simply a fun and education project). I also wanted to use language implementation as a context in which to dig deeper and learn more about F#.&lt;br /&gt;&lt;br /&gt;I've always been intrigued by &amp;quot;elegant&amp;quot; programming languages that had minimal &amp;quot;primitives&amp;quot; or syntax built into the language (i.e. LISP/Smalltalk/Forth/etc.). In this vein, I wanted to see what I could try to do around removing a bunch of concepts we typically deal with today: private/protected/public scoping, &amp;quot;class&amp;quot; versus &amp;quot;function&amp;quot; objects and keywords, differing syntax between function definition and lambda definition, etc.&lt;br /&gt;
&lt;h2&gt;Implementation&lt;/h2&gt;
Currently, the Kaleido lexer and parser is automatically generated via the FsLex and FsYacc tools that are in the F# PowerPack. The main eval function that is the heart of the Kaleido language is only around 40-50 lines of F# code.&lt;br /&gt;
&lt;h2&gt;Dependencies&lt;/h2&gt;
Kaleido is built on the &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=61ad6924-93ad-48dc-8c67-60f7e7803d3c&amp;amp;displaylang=en" class="externalLink"&gt;September 2008 CTP&lt;span class="externalLinkIcon"&gt;&lt;/span&gt;&lt;/a&gt; of F# (1.9.6.2) and uses the F# project integration into Visual Studio 2008.&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;</description><author>jolson88</author><pubDate>Thu, 16 Apr 2009 08:17:38 GMT</pubDate><guid isPermaLink="false">Updated Wiki: Home 20090416081738A</guid></item><item><title>Source code checked in, #7586</title><link>http://kaleido.codeplex.com/SourceControl/ListDownloadableCommits.aspx</link><description>Initial check-in of Kaleido</description><author>jolson88</author><pubDate>Thu, 16 Apr 2009 07:57:18 GMT</pubDate><guid isPermaLink="false">Source code checked in, #7586 20090416075718A</guid></item></channel></rss>