<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://dotnet.lv/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"><channel><title>Valdis Iljuconoks : F#</title><link>http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx</link><description>Tagi: F#</description><dc:language>en</dc:language><generator>CommunityServer 2008 SP1 (Build: 30619.63)</generator><item><title>Schedule</title><link>http://dotnet.lv/blogs/vi/archive/2012/04/19/schedule.aspx</link><pubDate>Wed, 18 Apr 2012 21:09:00 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:355406</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=355406</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=355406</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2012/04/19/schedule.aspx#comments</comments><description>&lt;div id="post_content"&gt;
&lt;p&gt;Kā izrādās, tad aprīļa pa&amp;scaron;as beigas un maija mēnesis izvērties par diezgan aizņemtu laika posmu. Katrā ziņā, var noķert mani kaut kur tur&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img height="352" width="469" src="http://i.i.com.com/cnwk.1d/i/tim/2010/10/13/businessman-running-4x3_540x405.jpg" align="right" border="0" style="background-image:none;border-right-width:0px;margin:20px;padding-left:0px;padding-right:0px;display:inline;float:right;border-top-width:0px;border-bottom-width:0px;border-left-width:0px;padding-top:0px;" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:large;"&gt;Aprīlis 2012:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.04.26&lt;/span&gt;: Transporta un Sakaru Institūts:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;18:15 &amp;ndash; 19:15 &amp;ldquo;MSF &amp;amp; Agile&amp;rdquo; &lt;/p&gt;
&lt;p&gt;19:15 &amp;ndash; 19:45 &amp;ldquo;TFS 2012 Overview (Dev &amp;lsquo;11)&amp;rdquo;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:large;"&gt;Maijs 2012:&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.07&lt;/span&gt;: Latvijas Universitāte:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18:15&lt;/strong&gt; &amp;ndash; 19:15 &amp;ldquo;Parallel Computing in Visual Studio 2010&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.08&lt;/span&gt;: Vidzemes Augstskola:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;10:00&lt;/strong&gt; &amp;ndash; 10:55 &amp;ldquo;Asp.Net MVC&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11:00&lt;/strong&gt; &amp;ndash; 11:55 &amp;ldquo;Funkcionālā programmē&amp;scaron;ana - F#&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12:00&lt;/strong&gt; &amp;ndash; 12:55 &amp;ldquo;Visual Studio 2012 - What&amp;#39;s new?&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;13:00&lt;/strong&gt; &amp;ndash; 13:55 &amp;ldquo;Requirements Management in TFS&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.14&lt;/span&gt;: Latvijas Universitāte:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18:15&lt;/strong&gt; &amp;ndash; 19:15 &amp;ldquo;Funkcionālā programmē&amp;scaron;ana - F#&amp;ldquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.17&lt;/span&gt;: Ventspils Augstskola:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;11:00&lt;/strong&gt; &amp;ndash; 11:45 &amp;ldquo;Designing Software Architecture in VS 2010&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;12:45&lt;/strong&gt; &amp;ndash; 13:30 &amp;ldquo;C# 3.0 &amp;amp; C# 4.0&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;13:40&lt;/strong&gt; &amp;ndash; 14:25 &amp;ldquo;MSF &amp;amp; Agile&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;14:35&lt;/strong&gt; &amp;ndash; 15:20 &amp;ldquo;Requirements Management in TFS&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.21&lt;/span&gt;: Latvijas Universitāte:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18:15&lt;/strong&gt; &amp;ndash; 19:15 &amp;ldquo;C# 5.0 &amp;ndash; async&amp;rdquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:medium;"&gt;2012.05.28&lt;/span&gt;: Latvijas Universitāte:&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;18:15&lt;/strong&gt; &amp;ndash; 19:15 &amp;ldquo;Ievads jQuery&amp;ldquo;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=355406" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Tfs/default.aspx">Tfs</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Other/default.aspx">Other</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Architecture/default.aspx">Architecture</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Design/default.aspx">Design</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Parallel+FX/default.aspx">Parallel FX</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/C_2300_/default.aspx">C#</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/TFS+11/default.aspx">TFS 11</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+Dev+11/default.aspx">Visual Studio Dev 11</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2012/default.aspx">Visual Studio 2012</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/jQuery/default.aspx">jQuery</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Agile/default.aspx">Agile</category></item><item><title>F# priekš telefona</title><link>http://dotnet.lv/blogs/vi/archive/2010/08/20/f-priek-telefona.aspx</link><pubDate>Fri, 20 Aug 2010 15:00:09 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:16652</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=16652</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=16652</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2010/08/20/f-priek-telefona.aspx#comments</comments><description>&lt;div id="post_content"&gt;   &lt;p&gt;Ja kādam patīk programmēt funkcionālajā valodā un vēl papildus arī uz tik eksotiskas iekārtas kā Windows Phone 7, tad ļoti iespējams, ka noderēs online projekta šablons, kas piedāvā abas šīs lieliskās iespējas.&lt;/p&gt;    &lt;p&gt;Online galerijā meklējiet pēc “F# and C# Win Phone”.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&lt;a href="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/image_5F00_7F38F766.png" rel="lightbox"&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="" border="0" alt="" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/image_5F00_thumb_5F00_682A762A.png" width="444" height="308" /&gt;&lt;/a&gt; &lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Happy coding!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=16652" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Windows+Phone/default.aspx">Windows Phone</category></item><item><title>Pēdējais treniņa inventārs</title><link>http://dotnet.lv/blogs/vi/archive/2010/05/04/p-d-jais-treni-a-invent-rs.aspx</link><pubDate>Tue, 04 May 2010 09:58:05 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:13472</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=13472</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=13472</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2010/05/04/p-d-jais-treni-a-invent-rs.aspx#comments</comments><description>&lt;div id="post_content"&gt;   &lt;p&gt;Līdz ar Visual Studio pēdējās versijas oficiālo iznākšanu š.g. aprīļa vidū ir pieejams arī treniņa inventārs, kas paredzēts lai efektīvāk apgūtu jaunās tehnoloģijas un iespējas, kas jaunajā studijā nav maz.&lt;/p&gt;    &lt;p&gt;Visual Studio 2010 Training Kit ietver sevī šādas tehnoloģijas:&lt;/p&gt;    &lt;ul&gt;     &lt;li&gt;C# 4 &lt;/li&gt;      &lt;li&gt;Visual Basic 10 &lt;/li&gt;      &lt;li&gt;F# &lt;/li&gt;      &lt;li&gt;Parallel Extensions &lt;/li&gt;      &lt;li&gt;Windows Communication Foundation &lt;/li&gt;      &lt;li&gt;Windows Workflow &lt;/li&gt;      &lt;li&gt;Windows Presentation Foundation &lt;/li&gt;      &lt;li&gt;ASP.NET 4 &lt;/li&gt;      &lt;li&gt;Windows 7 &lt;/li&gt;      &lt;li&gt;Entity Framework &lt;/li&gt;      &lt;li&gt;ADO.NET Data Services &lt;/li&gt;      &lt;li&gt;Managed Extensibility Framework &lt;/li&gt;      &lt;li&gt;Visual Studio Team System &lt;/li&gt;   &lt;/ul&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Pakotnes izstrādē galvenokārt ir piedalījušies eksperti no Microsoft Developer &amp;amp; Platform Evangelism grupas.&lt;/p&gt;    &lt;p&gt;Pieejams – &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" target="_blank"&gt;šeit&lt;/a&gt;.&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;&amp;#160;&lt;/p&gt;    &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt; &lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=13472" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/ASP.NET/default.aspx">ASP.NET</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Entity+Framework/default.aspx">Entity Framework</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Parallel+FX/default.aspx">Parallel FX</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/TFS+2010/default.aspx">TFS 2010</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx">.NET4.0</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/Windows+7/default.aspx">Windows 7</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/WCF/default.aspx">WCF</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/WPF/default.aspx">WPF</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/WF/default.aspx">WF</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/MEF/default.aspx">MEF</category></item><item><title>FSharp – mērvienību atbalsts</title><link>http://dotnet.lv/blogs/vi/archive/2010/03/19/fsharp-m-rvien-bu-atbalsts.aspx</link><pubDate>Fri, 19 Mar 2010 16:13:53 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:11852</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=11852</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=11852</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2010/03/19/fsharp-m-rvien-bu-atbalsts.aspx#comments</comments><description>&lt;div id="post_content"&gt;&lt;p&gt;Pētot nedaudz vairāk F# valodas konstrukcijas uzdūros interesantai lietai, kas saucās – SI sistēmas mērvienību atbalsts uzreiz tieši jau pašā valodā. Šo mērvienību atbalsts tiek pasniegts tādā veidā, ka kompilācijas laikā tiek pārbaudītas dažādas formulas un izteiksmes un pēc labākās gribas FSharp kompilators mēģinās konkrēto izteiksmi pārbaudīt. Šīs pārbaudes notiek tikai kompilācijas laikā un nekādu ātrdarbības ietekmi uz izpildes laiku neatstāj.&lt;/p&gt;  &lt;p&gt;Tātad, lai kodā sāktu lietot mērvienības ir jādefinē vēlamais tips un jānorāda tam, ka tas ir mērvienības tips. Izdarāms tas ir ar &lt;font face="Courier New"&gt;Measure&lt;/font&gt; atribūta palīdzību.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// type to represent weight (kilo)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&amp;lt;Measure&amp;gt;] &lt;span style="color:blue;"&gt;type&lt;/span&gt; kg&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// type to represent distance (meter)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&amp;lt;Measure&amp;gt;] &lt;span style="color:blue;"&gt;type&lt;/span&gt; m&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// type to represent time (second)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&amp;lt;Measure&amp;gt;] &lt;span style="color:blue;"&gt;type&lt;/span&gt; s&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pēc tam ir iespējams veidot jau konkrētās mērvienības instances datus. Piemēram, varam izveidot attāluma un laika mērvienības vērtības:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; distance = 100.0&amp;lt;m&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; time = 7.8&amp;lt;s&amp;gt;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pēc tipu evaluācijas konsoles logs attēlo jaunos izveidotos tipus:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p&gt;&amp;gt; &lt;/p&gt;    &lt;p&gt;[&amp;lt;Measure&amp;gt;]      &lt;br /&gt;type kg       &lt;br /&gt;[&amp;lt;Measure&amp;gt;]       &lt;br /&gt;type m       &lt;br /&gt;[&amp;lt;Measure&amp;gt;]       &lt;br /&gt;type s       &lt;br /&gt;val distance : float&amp;lt;m&amp;gt; = 100.0       &lt;br /&gt;val time : float&amp;lt;s&amp;gt; = 7.8&amp;#160; &lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Kad ir izveidoti gan tipi, gan arī mērvienības vērtības kodā var sākt rakstīt formulas un algoritmus, kas izmanto šīs mērvienības. Piemēram varam aprēķināt ātrumu kādā jābrauc kādai super-puper opel sporta astrīdai, lai nobrauktu 100m 7.8 sekundēs. Izklausās jau nereāli, bet testa piemēram būs pilnīgi pietiekoši.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; speed = (distance / time)&lt;/p&gt;    &lt;p&gt;&amp;gt; &lt;/p&gt;    &lt;p&gt;val speed : float&amp;lt;m/s&amp;gt; = 12.82051282&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Kompilācijas laikā, piemēram, tiek arī pārbaudīts vai laiku un attālumu maz var saskaitīt.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img style="border-right-width:0px;display:block;float:none;border-top-width:0px;border-bottom-width:0px;margin-left:auto;border-left-width:0px;margin-right:auto;" title="" border="0" alt="" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi/error_5F00_2DC4D291.png" width="579" height="80" /&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Lai pārkonvertētu to daudz saprotamākā izteiksmē, jāatceras ir augstākā matemātika no 2. klasītes un jādefinē ir vairākas konvertēšanas konstantes:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// type to represent distance (kilometer)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&amp;lt;Measure&amp;gt;] &lt;span style="color:blue;"&gt;type&lt;/span&gt; km&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:green;"&gt;// type to represent distance (hour)&lt;/span&gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;[&amp;lt;Measure&amp;gt;] &lt;span style="color:blue;"&gt;type&lt;/span&gt; h&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; kmPerMeter = 0.001&amp;lt;km/m&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; secPerHour = 3600.0&amp;lt;s/h&amp;gt;&lt;/p&gt;    &lt;p style="margin:0px;"&gt;&amp;#160;&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Pēc kad ir nodefinētas konstantes varam veikt konvertēšanu no metriem sekundē uz kilometriem stundā:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;let&lt;/span&gt; speedKph =&amp;#160; speed * kmPerMeter * secPerHour&lt;/p&gt;    &lt;p&gt;&amp;gt; &lt;/p&gt;    &lt;p&gt;val speedKph : float&amp;lt;km/h&amp;gt; = 46.15384615&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Protams kompilators nenoķers programmētāja loģiskās kļūdas, bet ja tiek sajaukta kāda matemātiskā operācija (piemēram, reizināšanas vietā tiek dalīts), noteikti rezultāts būs ar jocīgu datu tipu:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;   &lt;p&gt;&amp;gt; speed * kmPerMeter / secPerHour;;      &lt;br /&gt;val it : float&amp;lt;h km/s ^ 2&amp;gt; = 3.561253561e-06&lt;/p&gt; &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Kā redzams, tad F# valodas iebūvētais atbalsts mērvienībām ir diezgan noderīgs gadījumos, kad tiešām ir jāveido formulas un jādod iespēja pārslēgties starp dažādām mērvienības sistēmām.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=11852" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>F# spēka paka</title><link>http://dotnet.lv/blogs/vi/archive/2010/02/19/f-sp-ka-paka.aspx</link><pubDate>Fri, 19 Feb 2010 10:59:00 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:10018</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>28</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=10018</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=10018</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2010/02/19/f-sp-ka-paka.aspx#comments</comments><description>&lt;div id="post_content"&gt;
&lt;p&gt;Nesen laists klajā jauna programmē&amp;scaron;anas valodas F# spēka paka jeb &lt;b&gt;Power Pack&lt;/b&gt;, kas apvieno dažādas interesantas un noderīgas lietas, kuras nav ietvertas standarta valodas bibliotēkās.&lt;/p&gt;
&lt;p&gt;Neliels ieskats power pakas saturā, kas sastāv no vairākām bibliotēkām:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FSharp.PowerPack.dll        
&lt;ul&gt;
&lt;li&gt;Vairākas jaunas maināmi (&lt;i&gt;immutable&lt;/i&gt;, atceramies, ka pēc noklusējuma F# tipi nav maināmi) datu tipi, piemēram, HashMultiMap, kā arī vairākas papla&amp;scaron;inātās metodes, kuras sniedz funkcionālu pieejas interfeisa tādām datu struktūrām, kā piemēram, List&amp;lt;T&amp;gt;. &lt;/li&gt;
&lt;li&gt;Dažādi matemātiskie datu tipi (Vector, Matrix, utt). &lt;/li&gt;
&lt;li&gt;F# SI mērvienību definē&amp;scaron;ana izmantojot mērvienību valodas konstrukciju. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;[&amp;lt;Measure&amp;gt;]      &lt;br /&gt;/// hertz, SI unit of frequency       &lt;br /&gt;type Hz = s^-1&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Kā arī papildinājumus Async programmē&amp;scaron;anai, piemēram, asinhrono I/O papla&amp;scaron;inājumus, kā arī dažādas palīdzības funkcijas. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Ir pieejams F# dokumentācijas ģenerators (FsHtmlDoc.exe). &lt;/li&gt;
&lt;li&gt;FSharp.PowerPack.Linq.dll &amp;ndash; piedāvā F# pieeju dažādām .Net 3.5 platformas iespējām.        
&lt;ul&gt;
&lt;li&gt;Konvertātori uz izteiksmju kokiem &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let adderExpr = &amp;lt;@ fun i -&amp;gt; i + 1 @&amp;gt;.ToLinqExpression ()      &lt;br /&gt;let adder = &amp;lt;@ fun i -&amp;gt; i + 1 @&amp;gt;.Compile()&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;nbsp;
&lt;ul&gt;
&lt;li&gt;Pieejams jauns query operators. &lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let db = new NORTHWND(connString)      &lt;br /&gt;let sameCountry =       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; query &amp;lt;@ seq { for e in db.Employees do       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for c in db.Customers do       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if e.Country = c.Country then       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; yield (e,c) } @&amp;gt;&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;FSharp.PowerPack.Parallel.dll &amp;ndash; piedāvā dažādas paralēlās operācijas uz datu kopām, kuras ir jau pieejamas kā bāzes klases .Net 4.0 platformas versijā. &lt;/li&gt;
&lt;/ul&gt;
&lt;div style="border-bottom:1px dashed;border-left:1px dashed;padding-bottom:3px;padding-left:3px;padding-right:3px;font-family:courier new;background:#efefef;color:black;font-size:10pt;border-top:1px dashed;border-right:1px dashed;padding-top:3px;"&gt;let nums = [|1..500000|]      &lt;br /&gt;let finalDigitOfPrimes =       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nums       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.filter isPrime       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.groupBy (fun i -&amp;gt; i % 10)       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.map (fun (k, vs) -&amp;gt; (k, Seq.length vs))       &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;gt; PSeq.toArray&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Power paka pieejama &amp;scaron;eit - &lt;a title="http://fsharppowerpack.codeplex.com/" href="http://fsharppowerpack.codeplex.com/"&gt;http://fsharppowerpack.codeplex.com/&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=10018" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/Patterns+_2600_amp_3B00_+Practices/default.aspx">Patterns &amp;amp; Practices</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/.NET4.0/default.aspx">.NET4.0</category></item><item><title>Pipelining</title><link>http://dotnet.lv/blogs/vi/archive/2009/02/22/pipelining.aspx</link><pubDate>Sun, 22 Feb 2009 21:37:05 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:2736</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>4</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=2736</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=2736</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2009/02/22/pipelining.aspx#comments</comments><description>&lt;div id="post_content"&gt;&lt;p&gt;Nosaukums nav diezko aizraujošs, bet gribēju pastāstīt par iespējams vienu no nozīmīgākajām F# valodas konstrukcijām – operatoru “|&amp;gt;”.&lt;/p&gt;  &lt;p&gt;Tā definīcija ir pavisam vienkārša:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&lt;span style="color:#0000ff;"&gt;let&lt;font color="#000000"&gt; (|&amp;gt;) x f = f x&lt;/font&gt;&lt;/span&gt;&lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;No tipa definīcijas ir saprotams, ka tā ir inversā operācija, kas padotajam argumentam pielieto padoto funkciju.&lt;/p&gt;  &lt;p&gt;Tipa definīcija ir:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;val (|&amp;gt;) : &amp;#39;a –&amp;gt; (&amp;#39;a –&amp;gt; &amp;#39;b) –&amp;gt; &amp;#39;b&lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;kas nozīmē, ka funckija ar diviem argumentiem, kuras rezultāts (... –&amp;gt; &amp;#39;b) ir otrā argumenta funckijas (... (&amp;#39;a –&amp;gt; &amp;#39;b) ...) gala produkts.&lt;/p&gt;  &lt;p&gt;No varētu dot šāda veida “fast forward” pieraksta veids? &lt;em&gt;Clarity&lt;/em&gt; jeb koda lasāmību un uztveramību.&lt;/p&gt;  &lt;p&gt;Īss ilustratīvs piemērs:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&lt;font color="#0000ff"&gt;let&lt;/font&gt; add a b = a + b&lt;/div&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&lt;font color="#0000ff"&gt;let&lt;/font&gt; nums = [1; 2; 3; 4; 5]&lt;/div&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&lt;font color="#0000ff"&gt;let&lt;/font&gt; odds_plus_ten =&lt;/div&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&amp;#160;&amp;#160;&amp;#160; List.map (add 10)&lt;/div&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; (List.filter (&lt;font color="#0000ff"&gt;fun&lt;/font&gt; n -&amp;gt; n % 2 &amp;lt;&amp;gt; 0) nums) &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Šajā piemērā definējam vispirms funkciju, kas saskaita 2 vērtības (jauki, ka F# ir tipu noteikšanas iespēja), definē sarakstu ar cipariem un katram nepāra ciparam iepriekš definētajā sarakstā pieskaita vērtību 10.&lt;/p&gt;  &lt;p&gt;Kods izskatās pietiekoši imperatīvs, lai vairums .Net lietotāju to saprastu un pieraksts likots pazītams un ierasts.&lt;/p&gt;  &lt;p&gt;Izmantojot lielisko “cauruļošanas” iespēju F# valodā, augstāk minētās funckijas pieraksts būtu šāds:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;div style="font-family:courier new;background:#efefef;color:black;font-size:9pt;"&gt;let odds_plus_ten =   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; nums    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; List.filter (fun n-&amp;gt; n%2 &amp;lt;&amp;gt; 0)    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; |&amp;gt; List.map (add 10) &lt;/div&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Kā rezsultātā List.filter funckija tiks izsaukta gan ar filtrēšanas funkciju, gan arī ar definēto ciparu kopu un funkcijas rezultāts tiks nodots tālāk List.map funckijas izpildei, kas izsauks ``List.map&amp;#39;&amp;#39; funkciju katram saraksta elementam.&lt;/p&gt;  &lt;p&gt;Pieraksts varbūt ir nedaudz nepierasts un savādāks, bet, manuprāt, daudz reiz saprotamāks un lasāmāks, cik nu funkcionālais stils var būt lasāms :)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tātad, “|&amp;gt;” operātors mums dod sekojošas priekšrocības:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Clarity&lt;/em&gt;. Ja tiek pielietots ar List.map un tamlīdzīgas klases funkcijām, datu tranformāciju un iterācijas var pierakstīt ķēdes pierakstā, kas palielina koda lasīmību.&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Type inference&lt;/em&gt;. Pielietojot “|&amp;gt;” operatoru tiek panākta objektu tipa informācijas plūsma no kreisās puses, kur tiek definēts ieejas objekts, uz labo pusi – funckijām, kas manipulē ar šiem objektiem. F# pats izmanto šo informāciju, lai risinātu dažāda rakstura valodas konstrukcijas jautājumus (īpašību pieeja un metožu pārlādi).&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cermas, ka noderēs!&lt;/p&gt;&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=2736" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>Kam patīk pozicionālie argumenti?</title><link>http://dotnet.lv/blogs/vi/archive/2009/02/12/kam-pat-k-pozicion-lie-argumenti.aspx</link><pubDate>Thu, 12 Feb 2009 19:29:00 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:2655</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>470</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=2655</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=2655</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2009/02/12/kam-pat-k-pozicion-lie-argumenti.aspx#comments</comments><description>&lt;div id="post_content"&gt;
&lt;p&gt;&lt;img height="146" width="103" src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi.fsharp/ffs.gif" align="right" alt="" /&gt; Ilgu laiku mums nācies programmēt valodās, kurās pozicionālie argumenti jeb vērtības metodei tika nodotas atkarībā no pozīcijas. Jaunajā C# valodā &amp;scaron;īs problēmas tiks atrisinātas, citās valodās laikam saglabāsies vēl ilgāku laiku - sākas ar &amp;quot;JA&amp;quot; un beidzas ar &amp;quot;VA&amp;quot; :)&lt;/p&gt;
&lt;p&gt;Protams, ka pozicionālie argumenti metodēm rada nelielas galvas sāpes &amp;scaron;o metožu radītājiem, kas kopsummā padara kodu repetatīvu un grūtāk uztveramu.&lt;/p&gt;
&lt;p&gt;Tā kā mēģinu lēnām kustēties līdzi galvenajai straumei (&lt;em&gt;next wave mainstream&lt;/em&gt;) un interesējos intensīvāk par funkcionālās programmē&amp;scaron;anas iespējām .Net platformā, tad &amp;scaron;oreiz gribēju padalīties nedaudz ar informāciju, kā nosauktos un neobligātie argumenti ir realizēti F# programmē&amp;scaron;anas valodā.&lt;/p&gt;
&lt;p&gt;Pieņemsim, ka ir sekojo&amp;scaron;as klases:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-family:andale mono;background:#efefef;color:black;font-size:9pt;"&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; Address(st :string) =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; a.Street = st&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; Client(code :string, address :Address) =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; c.Code = code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; c.Address = addr &lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Klases nav pārāk sarežģītas - adrese un klients.&lt;/p&gt;
&lt;p&gt;Konstruēt jaunas instances &amp;scaron;ādam klientam ir ļoti vienkār&amp;scaron;i:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;gt; Client (&amp;quot;1123456-12345&amp;quot;, Address (&amp;quot;Brivibas&amp;quot;));;&lt;br /&gt;val it : Client = FSI_0004+Client {Address = FSI_0003+Address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Code = &amp;quot;1123456-12345&amp;quot;;}&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Ideāli būtu ja varētu &amp;scaron;ai klasei ieviest neobligātos parametrus, ja nu pēk&amp;scaron;ņi kādam ievajagās klientu ar noklusēto adresi, kas gan diezvai kādam būs noderīgs :)&lt;/p&gt;
&lt;p&gt;Lai ieviestu klienta klases&amp;nbsp; konstruktoram neobligātos parametrus (un patiesībā arī nosauktos parametrus), ir nepiecie&amp;scaron;ams tipa definīcijas parametros ieviest &amp;quot;?&amp;quot; simbolu, kas pazīmē, ka parametru var arī nenorādīt tipa konstruē&amp;scaron;anas laikā.&lt;/p&gt;
&lt;p&gt;Jaunais tips izskatās &amp;scaron;āds&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-family:andale mono;background:#efefef;color:black;font-size:9pt;"&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; Address(st :string) =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; a.Street = st&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#0000ff;"&gt;type&lt;/span&gt; Client(?code :string, ?address :Address) =&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; code = defaultArg code &amp;quot;&amp;quot;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;let&lt;/span&gt; addr = &lt;span style="color:#0000ff;"&gt;match&lt;/span&gt; address &lt;span style="color:#0000ff;"&gt;with&lt;/span&gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | None -&amp;gt; &lt;span style="color:#0000ff;"&gt;new&lt;/span&gt; Address(&amp;quot;&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; | Some a -&amp;gt; a&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; c.Code = code&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:#0000ff;"&gt;member&lt;/span&gt; c.Address = addr &lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tātad par veiktajām izmaiņām visu pēc kārtas:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Pirms parametra nosaukuma tika pievienots &amp;quot;?&amp;quot; simbols, kas definē, ka parametrs ir neobligāts.  &lt;/li&gt;
&lt;li&gt;Tipā tika ieviesti divi papildus mainīgie parametru vērtību aprēķinā&amp;scaron;ai.  &lt;/li&gt;
&lt;li&gt;Funkcija &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;defaultArg&lt;/span&gt; dod iespēju pārbaudīt un pie&amp;scaron;ķirt vērtību kādam mainīgajam, ja parametrs netika norādīts (kaut kas līdzīgs &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;var i = (p != null ? p : -1)&lt;/span&gt;). &amp;Scaron;ī funkcija darbojas tikai uz vienkār&amp;scaron;ajiem tipiem.  &lt;/li&gt;
&lt;li&gt;Otrs parametrs, kas ir kompleksais (cits tips - &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;Address&lt;/span&gt;) tipa ķermenī tiek reprezentēts kā &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;option&lt;/span&gt;, kura vērtība var iegūst pielietojot &lt;em&gt;pattern matching &lt;/em&gt;ideoloģiju F# programmē&amp;scaron;anas valodā (par &amp;scaron;o veidu noteikti pastāstī&amp;scaron;u kādā no nākamajām reizēm).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Tātad izveidojām tipu ar neobligātajiem parametriem, kura definīcija ir sekojo&amp;scaron;a:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;type Client =&lt;br /&gt;&amp;nbsp; class&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new : ?code:string * ?address:Address -&amp;gt; Client&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; member Address : Address&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; member Code : string&lt;br /&gt;&amp;nbsp; end&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kā redzams, tad jauna tipa izveide ir iespējama ar neobligātajiem parametriem, kuri tipā tiek reprezentēti kā ?address:Address, kas nozīmē, ka parametrs ir &lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;option&lt;/span&gt; tipa.&lt;/p&gt;
&lt;p&gt;Jaunu instanci izveidot ir pavisam vienkār&amp;scaron;i:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;gt; Client();;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;val it : Client = FSI_0006+Client {Address = FSI_0003+Address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Code = &amp;quot;&amp;quot;;}&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Scaron;ajā gadījumā noklusēto vērtību iegūst abi argumenti.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;&amp;gt; Client(address = Address(&amp;quot;Brivibas&amp;quot;), code = &amp;quot;123456-12345&amp;quot;);;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:&amp;#39;Courier New&amp;#39;;"&gt;val it : Client = FSI_0006+Client {Address = FSI_0003+Address;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Code = &amp;quot;123456-12345&amp;quot;;}&lt;/span&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Kā redzams, tad neobligāto pparametru nodo&amp;scaron;anas pieraksts ir stipri līdzīgs, kādu mēs sagaidām no jaunās C# valodas versijas. Jauki redzēt, ka &amp;scaron;ī iespēja ir iestrādāta F# OO sadaļā jau no pa&amp;scaron;a sākuma. &lt;/p&gt;
&lt;p&gt;Centī&amp;scaron;os cik vien laiks atļauj mēģinām lēnām iepazīstināt Jūs ar &amp;scaron;īs valodas konstrukcijām un iespējām. Tā tak nevar būt, ka Microsoft kļūdās, par nākamās paaudzes un nākamā viļņa tehnoloģijām un rīkiem, ko pēc pāris gadiem visi izmantos un visiem darba devējiem būs aktuāli (ja vien nebūsim jau ekonomiskās krīzes nobeigti...) &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=2655" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category></item><item><title>Jaunais vilnis - paplašinājuma īpašības</title><link>http://dotnet.lv/blogs/vi/archive/2008/11/21/jaunais-vilnis-papla-in-juma-pa-bas.aspx</link><pubDate>Fri, 21 Nov 2008 20:40:00 GMT</pubDate><guid isPermaLink="false">245d81fd-b543-41d7-a051-d8603c6e9e31:2146</guid><dc:creator>valdis.iljuconoks</dc:creator><slash:comments>5</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/rsscomments.aspx?PostID=2146</wfw:commentRss><wfw:comment xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://dotnet.lv/blogs/vi/commentapi.aspx?PostID=2146</wfw:comment><comments>http://dotnet.lv/blogs/vi/archive/2008/11/21/jaunais-vilnis-papla-in-juma-pa-bas.aspx#comments</comments><description>&lt;div id="post_content"&gt;
&lt;p&gt;Sveicināti atkal,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pētot sarakstu ar iespējām, ko Microsoft izstrādātāji ir ieplānoju&amp;scaron;i izdarīt ar C# 4.0 un VB 10 versijām (tās beidzot varētu teikt, ka saņems vienādu feature-set), ieraudzīju vienu palaistu garām feature - &lt;b&gt;Extension Properties&lt;/b&gt;. Piekrītu dažiem, ka papla&amp;scaron;inājuma metodes (ieraksti - &lt;a href="http://dotnet.lv/blogs/vi/archive/2008/08/29/jaun-s-konstrukcijas-vecaj-platform.aspx"&gt;1&lt;/a&gt;, &lt;a href="http://dotnet.lv/blogs/vi/archive/2008/09/20/back-to-future-papla-in-juma-metodes.aspx"&gt;2&lt;/a&gt;) rada sava veida apjukumu un disorientāciju kodā, piekrītu arī citiem, kas tas paver pla&amp;scaron;as papla&amp;scaron;inājuma iespējas savam un kādam citam kodam.&lt;/p&gt;
&lt;p&gt;Tomēr &amp;scaron;ķiet, ka C# tre&amp;scaron;ās versijas jaunievedums, kas deva papla&amp;scaron;ināt metodes, &amp;scaron;ķiet nedaudz nepabeigts bez papla&amp;scaron;inājuma īpa&amp;scaron;ībām, statiskajiem klases locekļiem vai pat papla&amp;scaron;ināmiem klases notikumiem.&lt;/p&gt;
&lt;p&gt;Par cik man darbs ir sajūsmināties un iedegties par visām jaunajām iespējām un platformām un galvenais argumentēti un pārliecino&amp;scaron;i to pasniegt priek&amp;scaron;niecībai, jo tikai tādā veidā notiek kaut kāds progress nevis stagnācija tehnoloģiskajā jomā, tad nu &amp;scaron;oreiz kārta ir programmē&amp;scaron;anas paradigmai, kas bija ļoti populāra pāris dekādes atpakaļ - funkcionālajai programmē&amp;scaron;anai. &amp;Scaron;oreiz runa ir par .NET 4.0 jaunpienācēju - F#.&lt;/p&gt;
&lt;p&gt;Nedaudz apgūstot F# pamatus sapratu, ka papla&amp;scaron;inājuma īp&amp;scaron;ības nodefinēt tipam F# programmē&amp;scaron;anas valodā ir tikpat vienkār&amp;scaron;i, kā nodefinēt jaunu tipa locekli (&lt;i&gt;member&lt;/i&gt;).&lt;/p&gt;
&lt;p&gt;Tātad, uzsākot mūsu mazo eksperimentu, mums ir jānodefinē vārdu telpa&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-family:andale mono;background:#efefef;color:black;font-size:9pt;"&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;namespace&lt;/span&gt; Int32Extensions&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Pēc tam ir jādefinē pats tips (klase):&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-family:andale mono;background:#efefef;color:black;font-size:9pt;"&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;module&lt;/span&gt; Int32Extensions = &lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;type&lt;/span&gt; System.Int32 &lt;span style="color:blue;"&gt;with&lt;/span&gt;&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;member&lt;/span&gt; this.DivFromTen&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color:blue;"&gt;with&lt;/span&gt; get() =&lt;/pre&gt;
&lt;pre style="margin:0px;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; 10 - this&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;Scaron;im jaunajam tipam jeb klasei ir jauns loceklis, kas definē jaunu īpa&amp;scaron;ību (with get()) System.Int32 tipam jeb klasei. Konkrēti jaunā īpa&amp;scaron;ība aprēķina &amp;quot;attālumu&amp;quot; līdz skaitlim 10.&lt;/p&gt;
&lt;p&gt;Pozitīvi ir arī tas, ka jaunie definētie locekļi parādās arī bez problēmām gudrajā pārlūkotajā - &lt;i&gt;IntelliSense&lt;/i&gt;.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;img src="http://dotnet.lv/cfs-file.ashx/__key/CommunityServer.Blogs.Components.WeblogFiles/vi.fsharp/ext_5F00_properties.png" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Un lūk arī rezultāts augstāk minētajām 2 rindiņām:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&amp;gt; &lt;br /&gt;val int : int &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;Div - 5&lt;/span&gt; 
&lt;/p&gt;
&lt;p&gt;&lt;span style="font-family:Courier New;"&gt;&amp;gt; &lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Jāpiemin, ka diemžēl &amp;scaron;īs konstrukcijas nav pieejamas citās valodās, piemēram, C# :(&lt;/p&gt;
&lt;p&gt;Būtu jau jauki, ja mēs varētu uzrakstīt kodu apmēram &amp;scaron;ādu:&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;div style="font-family:andale mono;background:#efefef;color:black;font-size:9pt;"&gt;
&lt;pre style="margin:0px;"&gt;&lt;span style="color:blue;"&gt;var&lt;/span&gt; past = 2.Minutes.Ago;&lt;/pre&gt;
&lt;/div&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cerams, ka noderēs!&lt;/p&gt;
&lt;p&gt;_____________________________&lt;/p&gt;
&lt;/div&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://dotnet.lv/aggbug.aspx?PostID=2146" width="1" height="1"&gt;</description><category domain="http://dotnet.lv/blogs/vi/archive/tags/Visual+Studio+2010/default.aspx">Visual Studio 2010</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/C_2300_+4.0/default.aspx">C# 4.0</category><category domain="http://dotnet.lv/blogs/vi/archive/tags/F_2300_/default.aspx">F#</category></item></channel></rss>