<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-6956872689990052576</id><updated>2011-07-30T17:50:05.974-07:00</updated><category term='Beethoven'/><category term='F#   Code  to Structure and Interpretation of Computer programs'/><category term='Bach'/><category term='iPod'/><category term='F# Haskell'/><category term='Haskell F#  State Monad'/><category term='F# Code to Structure and Interpretation of Computer programs'/><category term='Concurrent Quicksort  Erlang and F#'/><category term='F#  MailboxProcessor'/><category term='Robot'/><category term='F#'/><category term='F# Haskell Generic Algorithm'/><category term='Kleiber'/><category term='Monads In F#'/><category term='Coriolan'/><category term='F# WCF'/><category term='Mendelssohn'/><category term='Domain Specific Languages with F#'/><title type='text'>Somewhere between Primal and Dual</title><subtitle type='html'>my Ramblings in F#,Haskell and Mathematics</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://paul-abraham.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>22</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-2505924470671788445</id><published>2010-05-16T08:00:00.000-07:00</published><updated>2010-05-16T08:04:07.522-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Haskell F#  State Monad'/><title type='text'>Sierpinski‘s Triangle</title><content type='html'>&lt;div class="separator" style="clear: both; text-align: center;"&gt;&lt;a href="http://3.bp.blogspot.com/_ImU4wnRIaCU/S_AIggUKQfI/AAAAAAAAAFg/MVkUWXYPRoU/s1600/Sierpinski.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"&gt;&lt;img border="0" src="http://3.bp.blogspot.com/_ImU4wnRIaCU/S_AIggUKQfI/AAAAAAAAAFg/MVkUWXYPRoU/s320/Sierpinski.jpg" wt="true" /&gt;&lt;/a&gt;&lt;/div&gt;I am enjoying reading the book The Haskell School of Expression. This book teaches Haskell using graphics, multimedia, and so forth. Indeed, it is an interesting approach to teach a functional programming language than Fibonacci series and factorial numbers. After reading the chapter 2 “ Simple Graphics “, I tried to transcript the source code in F#. Boy, I must tell you, I ran into problems. I tried with WPF and F# and it seems to be not a happy marriage. After trying out several things, I chose DirectX and Winforms...Please read more&amp;nbsp; &amp;nbsp;&lt;a href="http://www.paul-abraham.com/Sierpinski.doc"&gt;www.paul-abraham.com/Sierpinski.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-2505924470671788445?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2505924470671788445'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2505924470671788445'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2010/05/sierpinskis-triangle.html' title='Sierpinski‘s Triangle'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ImU4wnRIaCU/S_AIggUKQfI/AAAAAAAAAFg/MVkUWXYPRoU/s72-c/Sierpinski.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-5913645867882984708</id><published>2009-12-24T10:46:00.000-08:00</published><updated>2009-12-24T10:54:14.956-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# Haskell'/><title type='text'>Caesar Cipher in F# and Haskell</title><content type='html'>&lt;meta equiv="Content-Type" content="text/html; charset=utf-8"&gt;&lt;meta name="ProgId" content="Word.Document"&gt;&lt;meta name="Generator" content="Microsoft Word 12"&gt;&lt;meta name="Originator" content="Microsoft Word 12"&gt;&lt;link rel="File-List" href="file:///C:%5CUsers%5Cpaul%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml"&gt;&lt;link rel="themeData" href="file:///C:%5CUsers%5Cpaul%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx"&gt;&lt;link rel="colorSchemeMapping" href="file:///C:%5CUsers%5Cpaul%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml"&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:worddocument&gt;   &lt;w:view&gt;Normal&lt;/w:View&gt;   &lt;w:zoom&gt;0&lt;/w:Zoom&gt;   &lt;w:trackmoves/&gt;   &lt;w:trackformatting/&gt;   &lt;w:hyphenationzone&gt;21&lt;/w:HyphenationZone&gt;   &lt;w:punctuationkerning/&gt;   &lt;w:validateagainstschemas/&gt;   &lt;w:saveifxmlinvalid&gt;false&lt;/w:SaveIfXMLInvalid&gt;   &lt;w:ignoremixedcontent&gt;false&lt;/w:IgnoreMixedContent&gt;   &lt;w:alwaysshowplaceholdertext&gt;false&lt;/w:AlwaysShowPlaceholderText&gt;   &lt;w:donotpromoteqf/&gt;   &lt;w:lidthemeother&gt;DE&lt;/w:LidThemeOther&gt;   &lt;w:lidthemeasian&gt;X-NONE&lt;/w:LidThemeAsian&gt;   &lt;w:lidthemecomplexscript&gt;X-NONE&lt;/w:LidThemeComplexScript&gt;   &lt;w:compatibility&gt;    &lt;w:breakwrappedtables/&gt;    &lt;w:snaptogridincell/&gt;    &lt;w:wraptextwithpunct/&gt;    &lt;w:useasianbreakrules/&gt;    &lt;w:dontgrowautofit/&gt;    &lt;w:splitpgbreakandparamark/&gt;    &lt;w:dontvertaligncellwithsp/&gt;    &lt;w:dontbreakconstrainedforcedtables/&gt;    &lt;w:dontvertalignintxbx/&gt;    &lt;w:word11kerningpairs/&gt;    &lt;w:cachedcolbalance/&gt;   &lt;/w:Compatibility&gt;   &lt;w:browserlevel&gt;MicrosoftInternetExplorer4&lt;/w:BrowserLevel&gt;   &lt;m:mathpr&gt;    &lt;m:mathfont val="Cambria Math"&gt;    &lt;m:brkbin val="before"&gt;    &lt;m:brkbinsub val="&amp;#45;-"&gt;    &lt;m:smallfrac val="off"&gt;    &lt;m:dispdef/&gt;    &lt;m:lmargin val="0"&gt;    &lt;m:rmargin val="0"&gt;    &lt;m:defjc val="centerGroup"&gt;    &lt;m:wrapindent val="1440"&gt;    &lt;m:intlim val="subSup"&gt;    &lt;m:narylim val="undOvr"&gt;   &lt;/m:mathPr&gt;&lt;/w:WordDocument&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;!--[if gte mso 9]&gt;&lt;xml&gt;  &lt;w:latentstyles deflockedstate="false" defunhidewhenused="true" defsemihidden="true" defqformat="false" defpriority="99" latentstylecount="267"&gt;   &lt;w:lsdexception locked="false" priority="0" semihidden="false" unhidewhenused="false" qformat="true" name="Normal"&gt;   &lt;w:lsdexception locked="false" priority="9" semihidden="false" unhidewhenused="false" qformat="true" name="heading 1"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 2"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 3"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 4"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 5"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 6"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 7"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 8"&gt;   &lt;w:lsdexception locked="false" priority="9" qformat="true" name="heading 9"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 1"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 2"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 3"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 4"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 5"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 6"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 7"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 8"&gt;   &lt;w:lsdexception locked="false" priority="39" name="toc 9"&gt;   &lt;w:lsdexception locked="false" priority="35" qformat="true" name="caption"&gt;   &lt;w:lsdexception locked="false" priority="10" semihidden="false" unhidewhenused="false" qformat="true" name="Title"&gt;   &lt;w:lsdexception locked="false" priority="1" name="Default Paragraph Font"&gt;   &lt;w:lsdexception locked="false" priority="11" semihidden="false" unhidewhenused="false" qformat="true" name="Subtitle"&gt;   &lt;w:lsdexception locked="false" priority="22" semihidden="false" unhidewhenused="false" qformat="true" name="Strong"&gt;   &lt;w:lsdexception locked="false" priority="20" semihidden="false" unhidewhenused="false" qformat="true" name="Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="59" semihidden="false" unhidewhenused="false" name="Table Grid"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Placeholder Text"&gt;   &lt;w:lsdexception locked="false" priority="1" semihidden="false" unhidewhenused="false" qformat="true" name="No Spacing"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" unhidewhenused="false" name="Revision"&gt;   &lt;w:lsdexception locked="false" priority="34" semihidden="false" unhidewhenused="false" qformat="true" name="List Paragraph"&gt;   &lt;w:lsdexception locked="false" priority="29" semihidden="false" unhidewhenused="false" qformat="true" name="Quote"&gt;   &lt;w:lsdexception locked="false" priority="30" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Quote"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 1"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 2"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 3"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 4"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 5"&gt;   &lt;w:lsdexception locked="false" priority="60" semihidden="false" unhidewhenused="false" name="Light Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="61" semihidden="false" unhidewhenused="false" name="Light List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="62" semihidden="false" unhidewhenused="false" name="Light Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="63" semihidden="false" unhidewhenused="false" name="Medium Shading 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="64" semihidden="false" unhidewhenused="false" name="Medium Shading 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="65" semihidden="false" unhidewhenused="false" name="Medium List 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="66" semihidden="false" unhidewhenused="false" name="Medium List 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="67" semihidden="false" unhidewhenused="false" name="Medium Grid 1 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="68" semihidden="false" unhidewhenused="false" name="Medium Grid 2 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="69" semihidden="false" unhidewhenused="false" name="Medium Grid 3 Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="70" semihidden="false" unhidewhenused="false" name="Dark List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="71" semihidden="false" unhidewhenused="false" name="Colorful Shading Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="72" semihidden="false" unhidewhenused="false" name="Colorful List Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="73" semihidden="false" unhidewhenused="false" name="Colorful Grid Accent 6"&gt;   &lt;w:lsdexception locked="false" priority="19" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="21" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Emphasis"&gt;   &lt;w:lsdexception locked="false" priority="31" semihidden="false" unhidewhenused="false" qformat="true" name="Subtle Reference"&gt;   &lt;w:lsdexception locked="false" priority="32" semihidden="false" unhidewhenused="false" qformat="true" name="Intense Reference"&gt;   &lt;w:lsdexception locked="false" priority="33" semihidden="false" unhidewhenused="false" qformat="true" name="Book Title"&gt;   &lt;w:lsdexception locked="false" priority="37" name="Bibliography"&gt;   &lt;w:lsdexception locked="false" priority="39" qformat="true" name="TOC Heading"&gt;  &lt;/w:LatentStyles&gt; &lt;/xml&gt;&lt;![endif]--&gt;&lt;style&gt; &lt;!--  /* Font Definitions */  @font-face 	{font-family:"Cambria Math"; 	panose-1:2 4 5 3 5 4 6 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:roman; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1107304683 0 0 159 0;} @font-face 	{font-family:Calibri; 	panose-1:2 15 5 2 2 2 4 3 2 4; 	mso-font-charset:0; 	mso-generic-font-family:swiss; 	mso-font-pitch:variable; 	mso-font-signature:-1610611985 1073750139 0 0 159 0;}  /* Style Definitions */  p.MsoNormal, li.MsoNormal, div.MsoNormal 	{mso-style-unhide:no; 	mso-style-qformat:yes; 	mso-style-parent:""; 	margin-top:0cm; 	margin-right:0cm; 	margin-bottom:10.0pt; 	margin-left:0cm; 	line-height:115%; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-fareast-font-family:Calibri; 	mso-bidi-font-family:"Times New Roman"; 	mso-fareast-language:EN-US;} .MsoChpDefault 	{mso-style-type:export-only; 	mso-default-props:yes; 	font-size:10.0pt; 	mso-ansi-font-size:10.0pt; 	mso-bidi-font-size:10.0pt; 	mso-ascii-font-family:Calibri; 	mso-fareast-font-family:Calibri; 	mso-hansi-font-family:Calibri;} @page Section1 	{size:612.0pt 792.0pt; 	margin:70.85pt 70.85pt 2.0cm 70.85pt; 	mso-header-margin:36.0pt; 	mso-footer-margin:36.0pt; 	mso-paper-source:0;} div.Section1 	{page:Section1;} --&gt; &lt;/style&gt;&lt;!--[if gte mso 10]&gt; &lt;style&gt;  /* Style Definitions */  table.MsoNormalTable 	{mso-style-name:"Table Normal"; 	mso-tstyle-rowband-size:0; 	mso-tstyle-colband-size:0; 	mso-style-noshow:yes; 	mso-style-priority:99; 	mso-style-qformat:yes; 	mso-style-parent:""; 	mso-padding-alt:0cm 5.4pt 0cm 5.4pt; 	mso-para-margin:0cm; 	mso-para-margin-bottom:.0001pt; 	mso-pagination:widow-orphan; 	font-size:11.0pt; 	font-family:"Calibri","sans-serif"; 	mso-ascii-font-family:Calibri; 	mso-ascii-theme-font:minor-latin; 	mso-fareast-font-family:"Times New Roman"; 	mso-fareast-theme-font:minor-fareast; 	mso-hansi-font-family:Calibri; 	mso-hansi-theme-font:minor-latin; 	mso-bidi-font-family:"Times New Roman"; 	mso-bidi-theme-font:minor-bidi;} &lt;/style&gt; &lt;![endif]--&gt;The roman empire Julius Caesar (100 B.C  -  44 B.C) used very simple encipher method to communicate with troops. This method substitutes each alphabet of a word with an alphabet from certain position further in alphabet system. If we use displacement-length 2 for the word “apple”,we will get  “crrng”.  This cipher method is very easy to crack because we have to check only 25 combinations and every language has characteristic distribution for its alphabets, just like finger print.&lt;br /&gt;please read more  &lt;a href="http://www.paul-abraham.com/CaesarCipher.doc"&gt;www.paul-abraham.com/CaesarCipher.doc&lt;/a&gt;&lt;br /&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-5913645867882984708?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/5913645867882984708'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/5913645867882984708'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/12/caesar-cipher-in-f-and-haskell.html' title='Caesar Cipher in F# and Haskell'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-3984781057650810661</id><published>2009-10-26T10:23:00.000-07:00</published><updated>2009-12-25T02:59:03.873-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# Haskell Generic Algorithm'/><title type='text'>Implementing Generic Algorithms  in Functional Languages</title><content type='html'>Haskell has the status like Hebrew ,Latin ,or Greek in the natural languages. Knowledge of Haskell will help you understand concepts of functional programming. I am profiting very much Haskell lectures which gave by Erick Meijer.&lt;br /&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/"&gt;http://channel9.msdn.com/shows/Going+Deep/C9-Lectures-Dr-Erik-Meijer-Functional-Programming-Fundamentals-Chapter-4-of-13/&lt;/a&gt;&lt;br /&gt;Generic functions increase reusability and composability . Let us start with the small example and we want write a function that gives biggest element of a given tuple. Well, if we implement this function Haskell.&lt;br /&gt;Please read more: &lt;a href="http://www.paul-abraham.com/GenericAlgorithms.doc"&gt;http://www.paul-abraham.com/GenericAlgorithms.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-3984781057650810661?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3984781057650810661'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3984781057650810661'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/10/implementing-generic-algorithms-in.html' title='Implementing Generic Algorithms  in Functional Languages'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-1986363281218465756</id><published>2009-06-28T18:42:00.000-07:00</published><updated>2009-06-29T17:01:28.185-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Beethoven'/><category scheme='http://www.blogger.com/atom/ns#' term='Kleiber'/><category scheme='http://www.blogger.com/atom/ns#' term='Coriolan'/><title type='text'>Is It An Interpretation or Revelation?</title><content type='html'>In my Life, I heard many times "Coriolan" Overture " (Beethoven), but this interpretation is a magic . Here comes maestro Carlos Kleiber to conduct :&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=KB_-zFcy-hM&amp;amp;feature=related"&gt;http://www.youtube.com/watch?v=KB_-zFcy-hM&amp;amp;feature=related&lt;/a&gt;&lt;br /&gt;Enjoy&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-1986363281218465756?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1986363281218465756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1986363281218465756'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/06/is-it-interpretation-or-revelation.html' title='Is It An Interpretation or Revelation?'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-3986299919970510582</id><published>2009-06-02T22:19:00.000-07:00</published><updated>2009-06-02T22:41:20.382-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monads In F#'/><title type='text'>State Monad in F#</title><content type='html'>I  watched Brain Beckman's Web Cast "The Zen of Stateless State"&lt;br /&gt;&lt;span style="font-family:arial;"&gt;&lt;a href="http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/"&gt;&lt;span style="font-size:85%;"&gt;http://channel9.msdn.com/shows/Going+Deep/Brian-Beckman-The-Zen-of-Expressing-State-The-State-Monad/&lt;/span&gt;&lt;/a&gt;&lt;br /&gt;and wrote example code for  State Monad  in F#. Please Check&lt;br /&gt;&lt;/span&gt;&lt;a href="http://www.paul-abraham.com/MonadsInFSharp.doc"&gt;&lt;span style="font-family:arial;"&gt;http://www.paul-abraham.com/MonadsInFSharp.doc&lt;/span&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-3986299919970510582?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3986299919970510582'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3986299919970510582'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/06/state-monad-in-f.html' title='State Monad in F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-8291952553411676439</id><published>2009-04-28T19:32:00.000-07:00</published><updated>2009-05-19T15:01:51.658-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='iPod'/><title type='text'>iPod=Horse</title><content type='html'>Now, I know, why I don't have an iPod. Thank you Maestro Riccardo Mutti for valuable Insights:)&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=2fyUGY5i9aQ"&gt;http://www.youtube.com/watch?v=2fyUGY5i9aQ&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Enjoy&lt;br /&gt;&lt;a href="http://www.youtube.com/watch?v=-AgfCW4r82A"&gt; http://www.youtube.com/watch?v=-AgfCW4r82A&lt;/a&gt;&lt;br /&gt;&lt;br /&gt; &lt;a href="http://www.youtube.com/watch?v=Xvdig4N0bpk"&gt;http://www.youtube.com/watch?v=Xvdig4N0bpk&lt;/a&gt; :)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-8291952553411676439?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/8291952553411676439'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/8291952553411676439'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/04/ipodhorse.html' title='iPod=Horse'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-8800031421842807393</id><published>2009-04-09T10:56:00.000-07:00</published><updated>2009-12-25T02:59:49.117-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Concurrent Quicksort  Erlang and F#'/><title type='text'>Concurrent Quicksort in Erlang and F#</title><content type='html'>Moore’s Law is no more applicable ( &lt;a href="http://en.wikipedia.org/wiki/Moore"&gt;http://en.wikipedia.org/wiki/Moore's_law&lt;/a&gt; ) since processors are not getting faster and faster. We have now multicore-processors and developers are confronted with new reality. There are dedicated frameworks like Parallel Extension ,Task Parallel Library(by-product of Microsoft Robotics) for Microsoft.net or dedicated programming languages such as Erlang, but the crucial ingredient for success is to modify algorithms to work parallel as possible. We can gauge achieved improvements by applying Amdahls Law(&lt;a href="http://en.wikipedia.org/wiki/Amdahl"&gt;http://en.wikipedia.org/wiki/Amdahl&lt;/a&gt;). I am going to implement these algorithms in F# and Erlang.&lt;br /&gt;Please read&amp;nbsp; more &lt;a href="http://www.paul-abraham.com/ConcurrentProgramming.doc"&gt;www.paul-abraham.com/ConcurrentProgramming.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-8800031421842807393?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/8800031421842807393'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/8800031421842807393'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/04/concurrent-quicksort-in-erlang-and-f.html' title='Concurrent Quicksort in Erlang and F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-1648420397484850221</id><published>2009-03-22T00:42:00.001-07:00</published><updated>2009-03-22T00:44:02.867-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Bach'/><title type='text'>A Giant Rock</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_ImU4wnRIaCU/ScXsA6dk7LI/AAAAAAAAACw/kN1lAHO9E2g/s1600-h/CIMG0132.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5315914435618204850" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_ImU4wnRIaCU/ScXsA6dk7LI/AAAAAAAAACw/kN1lAHO9E2g/s320/CIMG0132.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-1648420397484850221?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1648420397484850221'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1648420397484850221'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/03/giant-rock.html' title='A Giant Rock'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ImU4wnRIaCU/ScXsA6dk7LI/AAAAAAAAACw/kN1lAHO9E2g/s72-c/CIMG0132.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-3946275580322488763</id><published>2009-03-22T00:21:00.000-07:00</published><updated>2009-03-22T00:27:21.336-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F#  MailboxProcessor'/><title type='text'>Do I need to use synchronize primitives in F# MailboxProcessor ?</title><content type='html'>We don’t need any synchronizing primitives or additional synchronizing efforts to use F# Mailboxprocessor. I like to share a simple program which demonstrates that you don’t need care about synchronizing issues. Read more ....&lt;br /&gt;&lt;a href="http://www.paul-abraham.com/FSharpMailboxProcessor.doc"&gt;www.paul-abraham.com/FSharpMailboxProcessor.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-3946275580322488763?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3946275580322488763'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3946275580322488763'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/03/do-i-need-to-use-synchronize-primitives.html' title='Do I need to use synchronize primitives in F# MailboxProcessor ?'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-652305925408508925</id><published>2009-02-22T09:07:00.000-08:00</published><updated>2009-02-22T09:13:02.289-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# Code to Structure and Interpretation of Computer programs'/><title type='text'>Data Abstraction in F#</title><content type='html'>Data abstraction deals with the question, how to compose compound data from primitive types. SICP states : Data abstraction is a methodology that enables us to isolate how a compound data object is used from the details of how it is constructed from primitive data object. We will firstly implement a solution which is similar to the SICP text book (&lt;a href="http://mitpress.mit.edu/sicp/"&gt;http://mitpress.mit.edu/sicp/&lt;/a&gt;). It uses tuples as primitive data structure. Indeed, tuples are very straightforward and powerful primitive data structure in functional programming ,but on the other hand, we have to consider, whether these primitives are suitable for .Net platform in the era of SOA or cloud computing.&lt;br /&gt;Please check &lt;a href="http://www.paul-abraham.com/FSharpCode2SICP.doc"&gt;http://www.paul-abraham.com/FSharpCode2SICP.doc&lt;/a&gt; to get the whole series .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-652305925408508925?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/652305925408508925'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/652305925408508925'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/02/data-abstraction-in-f.html' title='Data Abstraction in F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-2104856987888561680</id><published>2009-02-16T07:57:00.000-08:00</published><updated>2009-02-16T08:28:59.649-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Mendelssohn'/><title type='text'>Mendelssohn's Workroom</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_ImU4wnRIaCU/SZmNpx_cq0I/AAAAAAAAACQ/gVhq6nepoZE/s1600-h/CIMG0143MDSmall.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5303425785139080002" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_ImU4wnRIaCU/SZmNpx_cq0I/AAAAAAAAACQ/gVhq6nepoZE/s320/CIMG0143MDSmall.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;This is the work-room of Felix Mendelssohn. I visted his home Leipzig . He wrote Elias in this room,yeah , a small room;but, with great impact:)&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-2104856987888561680?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2104856987888561680'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2104856987888561680'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/02/mendelssohns-workroom.html' title='Mendelssohn&apos;s Workroom'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_ImU4wnRIaCU/SZmNpx_cq0I/AAAAAAAAACQ/gVhq6nepoZE/s72-c/CIMG0143MDSmall.jpg' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-5451803755341875089</id><published>2009-02-14T23:12:00.000-08:00</published><updated>2009-02-14T23:44:29.633-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# WCF'/><title type='text'>WCF F# Examples</title><content type='html'>I like to share some WCF Examples which I have implemented in FSharp . I am going touch aspects of WCF by giving examples.&lt;br /&gt;&lt;br /&gt;Example 1 15.02.2009&lt;br /&gt;I like to show you in this example to setup a basic WCF service programmatically. We will add two channels(web service and tcp/ip) and enable metadata behavior which allows users to create proxy clients.&lt;br /&gt;Download the source code(&lt;a href="http://www.paul-abraham.com/FSharpWCFSimple1.zip"&gt;www.paul-abraham.com/FSharpWCFSimple1.zip&lt;/a&gt;) and compile it in shell command. Open the test client proxy by typing:&lt;br /&gt;wcftestclient &lt;a href="http://localhost:2008/SimpleService"&gt;http://localhost:2008/SimpleService&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Read more &lt;a href="http://www.paul-abraham.com/WCFProgrammingWithFSharp.doc"&gt;www.paul-abraham.com/WCFProgrammingWithFSharp.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-5451803755341875089?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/5451803755341875089'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/5451803755341875089'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/02/wcf-f-examples.html' title='WCF F# Examples'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-7461907356565439871</id><published>2009-01-05T13:17:00.000-08:00</published><updated>2009-01-05T13:19:28.160-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Domain Specific Languages with F#'/><title type='text'>Domain Specific Languages with F#</title><content type='html'>Sourcecode: &lt;a href="http://www.paul-abraham.com/DSLPolynomial.zip"&gt;www.paul-abraham.com/DSLPolynomial.zip&lt;/a&gt;&lt;br /&gt;Domain Specific Language (DSL) is a programming language which is applied on a specific area. Domain Specific Languages have habitually very small syntax and offers limited expressions, consequently it is very easy to learn and the user can focus on solving a problem rather than learning a fully fledged language. Pattern matching capabilities of F# and tools for parsing (fsyacc.exe) &amp;amp; lexing(fslex.exe) allow you create own  DSL effortlessly. Martin Fowler has written a profound article in this subject (&lt;a href="http://martinfowler.com/dslwip/UsingDsls.html"&gt;http://martinfowler.com/dslwip/UsingDsls.html&lt;/a&gt;).&lt;br /&gt;read more &lt;a href="http://www.paul-abraham.com/DSLPolynomial.doc"&gt;www.paul-abraham.com/DSLPolynomial.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-7461907356565439871?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/7461907356565439871'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/7461907356565439871'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2009/01/domain-specific-languages-with-f.html' title='Domain Specific Languages with F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-1558665660476750025</id><published>2008-12-07T08:07:00.001-08:00</published><updated>2008-12-07T08:13:09.930-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><title type='text'>Mutual Recursion in F#</title><content type='html'>Mutual recursion is an important concept in functional programming. It is useful if two function need to call each other. In the following example, I am calculating Fibonacci numbers in straight and mutual recursive fashion:&lt;br /&gt;#light&lt;br /&gt;// Straight Version&lt;br /&gt;let rec fibonacci(n) =&lt;br /&gt;if n&lt;1&gt;=0 "))&lt;br /&gt;if n &lt;=2 then 1 else fibonacci(n-1)+fibonacci(n-2)&lt;br /&gt;&lt;br /&gt;let n=fibonacci(8)&lt;br /&gt;printfn "%d" n&lt;br /&gt;&lt;br /&gt;// mutual recursion version&lt;br /&gt;let rec f(n)= if n=1 then 1 else g(n-1)&lt;br /&gt;and g(n)= if n=1 then 0 else g(n-1)+f(n-1)&lt;br /&gt;&lt;br /&gt;let mr_fibonacci(n)=f(n)+g(n)&lt;br /&gt;&lt;br /&gt;let mr_d=mr_fibonacci(8)&lt;br /&gt;printfn "%d" mr_d&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-1558665660476750025?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1558665660476750025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1558665660476750025'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/12/mutual-recursion-in-f.html' title='Mutual Recursion in F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-2753729774083205824</id><published>2008-11-30T21:12:00.000-08:00</published><updated>2008-12-07T09:04:40.281-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Robot'/><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><title type='text'>F#   LegoNxt Robot</title><content type='html'>&lt;a href="http://2.bp.blogspot.com/_ImU4wnRIaCU/STNzAk1eM5I/AAAAAAAAACI/rzIsObxZknk/s1600-h/DSC00414.JPG"&gt;&lt;img id="BLOGGER_PHOTO_ID_5274686042306130834" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 320px; CURSOR: hand; HEIGHT: 240px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_ImU4wnRIaCU/STNzAk1eM5I/AAAAAAAAACI/rzIsObxZknk/s320/DSC00414.JPG" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;div&gt;Source Code: &lt;a href="http://www.paul-abraham.com/FSLego.zip"&gt;www.paul-abraham.com/FSLego.zip&lt;/a&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;I am learning F# since 07/2007 and looked always for an opportunity to put my F# coding skills in to practice. I grabbed my son’s Lego Nxt and wrote a library in F# to communicate with Lego Nxt Brick via Blue Tooth . I have added support for two moving motors (Port B and C) , touch sensor (Port 1) and sonar sensor(Port4). Joe Armstrong (Erlang Programming Language) told in an interview something like this :&lt;br /&gt;In a real world, people also act concurrently from one another and this all works fine and we don’t need to be Siamese twins with conjoined brains(hint :shared memory). I am using Erlang style Message Passing Style using F# MailboxProcessor for collecting data and to control nxt robot.&lt;br /&gt;In source code , I have written an example AutonomousNxtBrick which will drive autonomic and avoid collision.&lt;br /&gt;&lt;br /&gt;Enjoy&lt;/div&gt;&lt;div&gt;&lt;/&gt;&lt;/div&gt;&lt;br /&gt;&lt;object width="320" height="266" class="BLOG_video_class" id="BLOG_video-202c88d1f4ffc9d3" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"&gt;&lt;param name="movie" value="http://www.youtube.com/get_player"&gt;&lt;param name="bgcolor" value="#FFFFFF"&gt;&lt;param name="allowfullscreen" value="true"&gt;&lt;param name="flashvars" value="flvurl=http://v20.nonxt6.googlevideo.com/videoplayback?id%3D202c88d1f4ffc9d3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331466177%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3A4FB4FE8EC4D7315C2B0C362CEFFBC53E33711D.600B83063CFF4043B7547DA8C1639E9921AC4C32%26key%3Dck1&amp;amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D202c88d1f4ffc9d3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLuvHXL0bsed6l0cK8cDpAwXfksQ&amp;amp;autoplay=0&amp;amp;ps=blogger"&gt;&lt;embed src="http://www.youtube.com/get_player" type="application/x-shockwave-flash"width="320" height="266" bgcolor="#FFFFFF"flashvars="flvurl=http://v20.nonxt6.googlevideo.com/videoplayback?id%3D202c88d1f4ffc9d3%26itag%3D5%26app%3Dblogger%26ip%3D0.0.0.0%26ipbits%3D0%26expire%3D1331466177%26sparams%3Did,itag,ip,ipbits,expire%26signature%3D3A4FB4FE8EC4D7315C2B0C362CEFFBC53E33711D.600B83063CFF4043B7547DA8C1639E9921AC4C32%26key%3Dck1&amp;iurl=http://video.google.com/ThumbnailServer2?app%3Dblogger%26contentid%3D202c88d1f4ffc9d3%26offsetms%3D5000%26itag%3Dw160%26sigh%3DLuvHXL0bsed6l0cK8cDpAwXfksQ&amp;autoplay=0&amp;ps=blogger"allowFullScreen="true" /&gt;&lt;/object&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-2753729774083205824?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='enclosure' type='video/mp4' href='http://www.blogger.com/video-play.mp4?contentId=202c88d1f4ffc9d3&amp;type=video%2Fmp4' length='0'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2753729774083205824'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/2753729774083205824'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/11/fsharp-legonxt-robot.html' title='F#   LegoNxt Robot'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_ImU4wnRIaCU/STNzAk1eM5I/AAAAAAAAACI/rzIsObxZknk/s72-c/DSC00414.JPG' height='72' width='72'/></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-6746419851620775188</id><published>2008-11-13T02:39:00.000-08:00</published><updated>2008-11-13T02:47:38.904-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F#'/><title type='text'>F# MailboxProcessor</title><content type='html'>The Mailboxprocessor class has changed slightly in Version 1.9.6.2&lt;br /&gt;You have to modify the example 13.11 from the Expert F# Book as following to run&lt;br /&gt;&lt;br /&gt;#light&lt;br /&gt;// ----------------------------&lt;br /&gt;// Listing 13-11.&lt;br /&gt;/// The internal type of messages for the agent&lt;br /&gt;type internal msg = Increment of int  Fetch of AsyncReplyChannel&lt;int&gt;  Stop&lt;br /&gt;type CountingAgent() =&lt;br /&gt;let counter = MailboxProcessor.Start(fun inbox -&gt;&lt;br /&gt;// The states of the message-processing state machine...&lt;br /&gt;let rec loop(n) =&lt;br /&gt;async { let! msg = inbox.Receive()&lt;br /&gt;match msg with&lt;br /&gt; Increment m -&gt;&lt;br /&gt;// increment and continue.&lt;br /&gt;return! loop(n+m)&lt;br /&gt; Stop -&gt;&lt;br /&gt;// exit&lt;br /&gt;return ()&lt;br /&gt; Fetch replyChannel -&gt;&lt;br /&gt;// post response to reply channel and continue&lt;br /&gt;do replyChannel.Reply(n)&lt;br /&gt;return! loop(n) }&lt;br /&gt;// The initial state of the message-processing state machine...&lt;br /&gt;loop(0))&lt;br /&gt;member a.Increment(n) = counter.Post(Increment(n))&lt;br /&gt;member a.Stop() = counter.Post(Stop)&lt;br /&gt;member a.Fetch() = counter.PostAndReply(fun replyChannel -&gt; Fetch(replyChannel))&lt;br /&gt;// ----------------------------&lt;br /&gt;let counter = new CountingAgent()&lt;br /&gt;counter.Increment(1)&lt;br /&gt;let v=counter.Fetch()&lt;br /&gt;printfn "%d" v&lt;br /&gt;counter.Increment(2)&lt;br /&gt;let s=counter.Fetch()&lt;br /&gt;printfn "%d" s&lt;br /&gt;counter.Stop()&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-6746419851620775188?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/6746419851620775188'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/6746419851620775188'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/11/f-mailboxprocessor.html' title='F# MailboxProcessor'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-3186227552842502985</id><published>2008-10-30T09:26:00.000-07:00</published><updated>2008-10-30T10:19:57.997-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# Code to Structure and Interpretation of Computer programs'/><title type='text'>Formulation Abstractions with Higher Order Functions</title><content type='html'>A function is called higher order function if it takes functions as arguments and return a function. Say, you have a family of algorithm and each of them differs from one another in some steps, but there is common basic patter. In object oriented world, you will use typically the Strategy–Pattern to tackle this kind of problem.&lt;br /&gt;Please check&lt;br /&gt;&lt;a href="http://www.paul-abraham.com/FSharpCode2SICP.doc"&gt;http://www.paul-abraham.com/FSharpCode2SICP.doc&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-3186227552842502985?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3186227552842502985'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3186227552842502985'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/10/3-formulation-abstractions-with-higher.html' title='Formulation Abstractions with Higher Order Functions'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-4570583588520059880</id><published>2008-10-19T13:37:00.000-07:00</published><updated>2008-10-20T12:40:08.529-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monads In F#'/><title type='text'>Continuation Monad</title><content type='html'>&lt;span style="font-family:arial;"&gt;Continuation Monad plays an import role in F# . It powers Workflows. I wrote a sample code in F# and checked monadic Axioms. Please check to get entire series&lt;br /&gt;( &lt;/span&gt;&lt;a href="http://www.paul-abraham.com/MonadsInFSharp.doc"&gt;&lt;span style="font-family:arial;"&gt;http://www.paul-abraham.com/MonadsInFSharp.doc&lt;/span&gt;&lt;/a&gt;&lt;span style="font-family:arial;"&gt;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-4570583588520059880?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/4570583588520059880'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/4570583588520059880'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/10/continuation-monad.html' title='Continuation Monad'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-1418888987031120748</id><published>2008-10-08T14:14:00.000-07:00</published><updated>2008-10-08T14:16:53.929-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F# Code to Structure and Interpretation of Computer programs'/><title type='text'>Linear Recursion and Linear Iteration (Tail Recursion).</title><content type='html'>Friends, I am back from Israel and I have attended there a mathematical conference. Now ,I am enjoying reading the wonderful book “Structure and Interpretation of computer Programs”. I have written  F# code for Linear Recursion and Linear Iteration (Tail Recursion). Please check &lt;a href="http://www.paul-abraham.com/FSharpCode2SICP.doc"&gt;http://www.paul-abraham.com/FSharpCode2SICP.doc&lt;/a&gt; to get the whole series&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-1418888987031120748?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1418888987031120748'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1418888987031120748'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/10/linear-recursion-and-linear-iteration.html' title='Linear Recursion and Linear Iteration (Tail Recursion).'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-1603357242325159592</id><published>2008-09-13T19:28:00.000-07:00</published><updated>2008-10-20T12:44:22.224-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monads In F#'/><title type='text'>List Monad in F#</title><content type='html'>Now, it is time look some useful monads than Identity Monad. If you look LINQ query , you can’t miss it recognize the Bind operator(&gt;&gt;=) of a Monad:&lt;br /&gt;public static IEnumerable&lt;tresult&gt; SelectMany&lt;tsource,&gt;&lt;br /&gt;&lt;br /&gt;I am using ResizeArray&lt;_&gt; as List, which is synonym for .Net generic list List&lt;&gt;. I have implemented standard Customer Order scenario to check monads Axioms:&lt;br /&gt;( &lt;a href="http://www.paul-abraham.com/MonadsInFSharp.doc"&gt;http://www.paul-abraham.com/MonadsInFSharp.doc&lt;/a&gt;)&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-1603357242325159592?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1603357242325159592'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/1603357242325159592'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/09/list-monad.html' title='List Monad in F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-3924006738393455058</id><published>2008-09-10T09:12:00.000-07:00</published><updated>2008-09-10T10:34:51.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='Monads In F#'/><title type='text'>Identity Monad in F#</title><content type='html'>When I have studied Category Theory at the university , I didn’t know where to use Monads and Kleisli triple.The Whole Gadget was very abstract to me. Since I have encountered with F# Workflows and LINQ , I understand the power and elegance of Monads. In order to learn F#,I have implemented the Identity Monad.&lt;br /&gt;( &lt;span style="font-family:arial;"&gt;&lt;a href="http://www.paul-abraham.com/MonadsInFSharp.doc"&gt;http://www.paul-abraham.com/MonadsInFSharp.doc&lt;/a&gt;&lt;/span&gt;&lt;span style="font-family:arial;"&gt;)&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-3924006738393455058?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3924006738393455058'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/3924006738393455058'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/09/identity-monad-in-f.html' title='Identity Monad in F#'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry><entry><id>tag:blogger.com,1999:blog-6956872689990052576.post-7946133549517642449</id><published>2008-09-03T20:38:00.000-07:00</published><updated>2008-09-03T21:10:49.332-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='F#   Code  to Structure and Interpretation of Computer programs'/><title type='text'>F#   Code  to Structure and Interpretation of Computer programs</title><content type='html'>&lt;span style="font-size:85%;"&gt;F# Code &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_0"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_1"&gt;Structure&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_2"&gt;and&lt;/span&gt; Interpretation &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_3"&gt;of&lt;/span&gt; Computer &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_4"&gt;programs&lt;/span&gt;.I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_5"&gt;love&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_6"&gt;and&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_7"&gt;enjoy&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_8"&gt;reading&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_9"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_10"&gt;book&lt;/span&gt; “&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_11"&gt;Structure&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_12"&gt;and&lt;/span&gt; Interpretation &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_13"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_14"&gt;computer&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_15"&gt;Programs&lt;/span&gt;” (&lt;/span&gt;&lt;a href="http://mitpress.mit.edu/sicp/"&gt;&lt;span style="font-size:85%;"&gt;http://mitpress.mit.edu/sicp/&lt;/span&gt;&lt;/a&gt;&lt;span style="font-size:85%;"&gt;) &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_16"&gt;but&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_17"&gt;examples&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_18"&gt;of&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_19"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_20"&gt;book&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_21"&gt;are&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_22"&gt;written&lt;/span&gt; in Lisp. &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_23"&gt;Right&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_24"&gt;now&lt;/span&gt; ,I am &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_25"&gt;learning&lt;/span&gt; F# &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_26"&gt;and&lt;/span&gt; I &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_27"&gt;think&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_28"&gt;that&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_29"&gt;it&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_30"&gt;is&lt;/span&gt; a &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_31"&gt;great&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_32"&gt;opportunity&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_33"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_34"&gt;acquire&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_35"&gt;practice&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_36"&gt;with&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_37"&gt;this&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_38"&gt;great&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_39"&gt;language&lt;/span&gt;.&lt;/span&gt; &lt;span style="font-size:85%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_40"&gt;Please&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_41"&gt;check&lt;/span&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;a href="http://www.paul-abraham.com/FSharpCode2SICP.doc"&gt;http://www.paul-abraham.com/FSharpCode2SICP.doc&lt;/a&gt; &lt;/span&gt;&lt;span style="font-size:85%;"&gt;&lt;span class="blsp-spelling-error" id="SPELLING_ERROR_42"&gt;to&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_43"&gt;get&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_44"&gt;the&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_45"&gt;whole&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_46"&gt;series&lt;/span&gt; . I will &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_47"&gt;add&lt;/span&gt; F# &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_48"&gt;implementaions&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_49"&gt;day&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_50"&gt;by&lt;/span&gt; &lt;span class="blsp-spelling-error" id="SPELLING_ERROR_51"&gt;day&lt;/span&gt;.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/6956872689990052576-7946133549517642449?l=paul-abraham.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/7946133549517642449'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/6956872689990052576/posts/default/7946133549517642449'/><link rel='alternate' type='text/html' href='http://paul-abraham.blogspot.com/2008/09/f-code-to-structure-and-interpretation.html' title='F#   Code  to Structure and Interpretation of Computer programs'/><author><name>Paul Abraham</name><uri>http://www.blogger.com/profile/12621458881091861457</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='32' height='31' src='http://3.bp.blogspot.com/_ImU4wnRIaCU/Svoto4NLdQI/AAAAAAAAAFA/zFKp9qwcdFo/S220/SP.jpg'/></author></entry></feed>
