<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>Life's End</title>
    <link>http://lifesend.com/</link>
    <description>Worship</description>
    <language>en-us</language>
    <item>
      <title>Thoughts on Scala</title>
      <description>&lt;!-- 
Found 0 labeled equations 
eq ids: 
--&gt;
&lt;!-- 
Found 1 figures 
fig ids: scala_logo
--&gt;
&lt;style type="text/css"&gt;pre.code {   background-color: #DDD;   color: #112;   padding: 10px;   font-size: 90%;   overflow: auto;   margin: 4px 0px;   width: 95%;}pre .normal {}pre .comment { color: #005; font-style: italic; }pre .keyword { color: #A00; font-weight: bold; }pre .method { color: #077; }pre .class { color: #074; }pre .module { color: #050; }pre .punct { color: #447; font-weight: bold; }pre .symbol { color: #099; }pre .string { color: #944; }pre .char { color: #F07; }pre .ident { color: #004; }pre .constant { color: #07F; }pre .regex { color: #B66; }pre .number { color: #F99; }pre .attribute { color: #5bb; }pre .global { color: #7FB; }pre .expr { color: #227; }pre .escape { color: #277; }div .aao_footer{ font-size: 80%; }&lt;/style&gt;
   &lt;div id=header&gt;
   &lt;h2&gt;Thoughts on Scala&lt;/h2&gt;
Aaron Radke &lt;br&gt;
2009-07-20 &lt;br&gt;
&lt;em&gt;A few thoughts and notes on Scala&lt;/em&gt;&lt;p&gt;
&lt;/div&gt;
&lt;div style="text-align:center"&gt;&lt;a name="fig_scala_logo"&gt;&lt;/a&gt;&lt;a href='/static/fig/scala_logo.png'&gt;&lt;img src="/static/fig/scala_logo_500x500_sh.png" border="none" alt="scala_logo_500x500_sh.png" align="center" width="500" &gt;&lt;/a&gt;&lt;!--
&lt;div class="caption"&gt;
Figure  1: none
&lt;/div&gt;
--&gt;&lt;/div&gt;&lt;p&gt;

&lt;h2&gt;&lt;a id="paradigmsyntax_general_principles"&gt;&lt;/a&gt; paradigm/syntax general principles 
&lt;/h2&gt;

&lt;h3&gt;&lt;a id="from_ruby"&gt;&lt;/a&gt; from ruby&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;mixins over inheritance&lt;/li&gt;
&lt;li&gt;the last statement of a function is the return value (encourages small modular code)&lt;/li&gt;
&lt;li&gt;no semicolon&lt;/li&gt;
&lt;li&gt;symbols with a prime before them like 'this&lt;/li&gt;
&lt;li&gt;everything is an object even primitives&lt;/li&gt;
&lt;li&gt;higher order functions for loop constructs&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a id="from_mathematica"&gt;&lt;/a&gt; from Mathematica&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;List based hierarchy and functional operations&lt;/li&gt;
&lt;li&gt;Powerful pattern matching for code branch decisions&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;&lt;a id="new"&gt;&lt;/a&gt; new&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;syntax&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;methods, classes, operators can all look the same to make a scalable language&lt;/li&gt;
&lt;li&gt;simple but expansive predifened associativity :, precedence provide scalability&lt;/li&gt;
&lt;li&gt;{}, () replacable&lt;/li&gt;
&lt;li&gt;_ for multiple fill on based on contexts&lt;/li&gt;
&lt;li&gt;pattern imports&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;types&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;imultibility (val, List)&lt;/li&gt;
&lt;li&gt;multibility (var, Array)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;operators&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;Parenthesis on an object calls the apply method&lt;/li&gt;
&lt;li&gt;Parenthesis on an object with an equals assignment calls the update method&lt;/li&gt;
&lt;li&gt;Single argument methods do not require a dot&lt;/li&gt;
&lt;li&gt;Any method can be used in operator notation&lt;/li&gt;
&lt;li&gt;predefined prefix unary operators +,-,!,~&lt;/li&gt;
&lt;li&gt;postfix operators are methods that take no arguments&lt;/li&gt;
&lt;li&gt;methods ending in : are for right called objects in operator notation&lt;/li&gt;
&lt;li&gt;equals == test uniformly verifies value with a pre null check&lt;/li&gt;
&lt;li&gt;methods are operators, precedence is sorted by beginning characters and associativity is sorted by ending character(:)&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;classes&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;Factory methods make use of apply&lt;/li&gt;
&lt;li&gt;Companion objects for cleaner instantiation of a companion class&lt;/li&gt;
&lt;li&gt;base code is the build in constructor&lt;/li&gt;
&lt;li&gt;parameters are fields&lt;/li&gt;
&lt;li&gt;parameters can have preconditions with require&lt;/li&gt;
&lt;li&gt;separate companion objects for static like pieces&lt;/li&gt;
&lt;li&gt;case classes for field pattern matching and companion object construction&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;traits&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;linearization&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;pattern matching&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;case classes for field pattern matching and companion object construction&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;control structures&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;everything returns values&lt;/li&gt;
&lt;li&gt;nested loops by additional generators&lt;/li&gt;
&lt;li&gt;currying to make language like control structures&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;functions&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;first class functions&lt;/li&gt;
&lt;li&gt;function literals&lt;/li&gt;
blank _ assumed input parameter patterns
partially applied functions with an automatic apply wrapping with _ matching
&lt;/ul&gt;
&lt;li&gt;typing inference&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;target typing&lt;/li&gt;
&lt;li&gt;simple flow typing versus complex Haskel typing for better OO interoperation&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;built in tools&lt;/li&gt;

&lt;ul&gt;
&lt;li&gt;xml&lt;/li&gt;
&lt;li&gt;combinator parsers: these are really powerful and really useful.  These provide whole new levels of abstraction&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;div class=aao_footer&gt;
&lt;hr&gt;

&lt;/div&gt;
</description>
      <author>Aaron Radke</author>
      <pubDate>Mon, 20 Jul 2009 16:57:57 +0000</pubDate>
      <link>&lt;a href="/feed/scala"&gt;/scala&lt;/a&gt;</link>
      <guid>&lt;a href="/feed/scala"&gt;/scala&lt;/a&gt;</guid>
    </item>
  </channel>
</rss>
