<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
	>

<channel>
	<title>Haskell. Po polsku.</title>
	<atom:link href="http://gracjanpolak.wordpress.com/feed/" rel="self" type="application/rss+xml" />
	<link>http://gracjanpolak.wordpress.com</link>
	<description>Nowinki o funkcyjnym języku programowania Haskell</description>
	<lastBuildDate>Fri, 05 Aug 2011 07:55:05 +0000</lastBuildDate>
	<language>pl</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
<cloud domain='gracjanpolak.wordpress.com' port='80' path='/?rsscloud=notify' registerProcedure='' protocol='http-post' />
<image>
		<url>http://s2.wp.com/i/buttonw-com.png</url>
		<title>Haskell. Po polsku.</title>
		<link>http://gracjanpolak.wordpress.com</link>
	</image>
	<atom:link rel="search" type="application/opensearchdescription+xml" href="http://gracjanpolak.wordpress.com/osd.xml" title="Haskell. Po polsku." />
	<atom:link rel='hub' href='http://gracjanpolak.wordpress.com/?pushpress=hub'/>
		<item>
		<title>Haskell dla dzieci</title>
		<link>http://gracjanpolak.wordpress.com/2011/08/05/haskell-dla-dzieci/</link>
		<comments>http://gracjanpolak.wordpress.com/2011/08/05/haskell-dla-dzieci/#comments</comments>
		<pubDate>Fri, 05 Aug 2011 07:55:01 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=460</guid>
		<description><![CDATA[Na Reddicie znalazłem dziś taką wypowiedź: Ja również uczę 10-13 latki programowania w Haskellu, na lekcjach pod nazwą &#8222;pracownia gier wideo&#8221; [...]. Wybrałem Haskella między innymi dlatego, że dzisiejsze dzieci będą aplikować o pracę za pięć lat a nie za tydzień, więc powinniśmy ich uczyć dróg przyszłości a nie antycznych i skazanych na zapomnienie metod [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=460&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Na Reddicie znalazłem dziś taką <a href="http://www.reddit.com/r/haskell/comments/j8ac0/haskell_for_kids_introduction_to_my_upcoming_class/">wypowiedź</a>:</p>
<blockquote><p>
Ja również uczę 10-13 latki programowania w Haskellu, na lekcjach pod nazwą &#8222;pracownia gier wideo&#8221; [...].</p>
<p>Wybrałem Haskella między innymi dlatego, że dzisiejsze dzieci będą aplikować o pracę za pięć lat a nie za tydzień, więc powinniśmy ich uczyć dróg przyszłości a nie antycznych i skazanych na zapomnienie metod używanych w przemyśle dzisiaj.
</p></blockquote>
<p>&#8211; blackh</p>
<p>Zdaję sobie sprawę z kontrowersyjności tego zdania. Szczerze mówiąc nawet nie spodziewałem się takiej wypowiedzi kiedykolwiek zobaczyć. Dalej w wątku na reddicie jest uzasadnienie:</p>
<blockquote><p>
Ucząc dzieci w tym wieku byłoby przestępstwem planowanie im kariery i zaczynanie przyuczania do zawodu. Znacznie ważniejsze od programowania funkcyjnego jest przygotowanie matematyczne i logiczne, i temu nie można zaprzeczyć.
</p></blockquote>
<p>&#8211; cdsmiths</p>
<p>Chciałbym mieć możliwość przyglądnięcia się zajęciom z dziećmi prowadzonym przez obu panów.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/460/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/460/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/460/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=460&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2011/08/05/haskell-dla-dzieci/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Haskell praca: SkrivaPå (powtórka)</title>
		<link>http://gracjanpolak.wordpress.com/2011/01/14/haskell-praca-skrivapa-powtorka/</link>
		<comments>http://gracjanpolak.wordpress.com/2011/01/14/haskell-praca-skrivapa-powtorka/#comments</comments>
		<pubDate>Fri, 14 Jan 2011 10:03:42 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=457</guid>
		<description><![CDATA[Kiedyś już zamieściłem tutaj ogłoszenie o pracy, przyszedł czas, by je powtórzyć! SkrivaPå rozwija się, potrzebujemy więcej ludzi do pomocy! Więc jeszcze raz nawołuję: Poszukujemy jednego albo dwóch programistów do pomocy przy tworzeniu serwisu SkrivaPå, internetowej aplikacji służącej do podpisywania dokumentów przez Internet oraz ogólnie zarządzania procesami kontrakcyjnymi dla biznesu. Jesteśmy dobrze zapowiadającym się startupem [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=457&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kiedyś już zamieściłem tutaj ogłoszenie o pracy, przyszedł czas, by je powtórzyć! SkrivaPå rozwija się, potrzebujemy więcej ludzi do pomocy!</p>
<p>Więc jeszcze raz nawołuję:</p>
<p>Poszukujemy jednego albo dwóch programistów do pomocy przy tworzeniu serwisu SkrivaPå, internetowej aplikacji służącej do podpisywania dokumentów przez Internet oraz ogólnie zarządzania procesami kontrakcyjnymi dla biznesu. Jesteśmy dobrze zapowiadającym się startupem polsko-szwedzkim w czasie bardzo szybkiego rozwoju. Mamy nadzieję na wspólną zabawę Haskellem oraz Twój kreatywny wkład.</p>
<p>Będziesz pracował(a) na swoim komputerze, w dowolnym miejscu świata. Jeśli mieszkasz w Sztokholmie to możesz nawet w naszym biurze. W Krakowie zaś możemy umówić się w kawiarni. Jak przystało na firmę internetową będziemy się porozumiewać głównie przez Google Docs, Skype oraz email.</p>
<p>Warunki<br />
Start: jak najszybciej<br />
Czas trwania: 3 miesiące<br />
Płaca: do negocjacji<br />
Godziny: 20h-40h tygodniowo (chętnie również studenci)</p>
<p>Aktualnie używane technologie to głównie:</p>
<p><a href="http://ubuntu.pl/">Linux</a><br />
<a href="http://haskell.org/">Haskell</a><br />
<a href="http://happstack.com/">Happstack</a></p>
<p>Jeśli tak ja my uwielbiasz Haskella, napisz do nas!</p>
<p>Kontakt: autor tego bloga.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/457/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/457/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/457/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=457&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2011/01/14/haskell-praca-skrivapa-powtorka/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Haskell kompilacja do exe</title>
		<link>http://gracjanpolak.wordpress.com/2010/11/25/haskell-kompilacja-do-exe/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/11/25/haskell-kompilacja-do-exe/#comments</comments>
		<pubDate>Thu, 25 Nov 2010 20:25:35 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=454</guid>
		<description><![CDATA[Kompilacja programów przy użyciu GHC jest bardzo prosta. Należy dodać opcję --make i gotowe. Potrzebujemy najpierw źródła zawierającego funkcję main, na przykład: main = putStrLn "Hello world" Jeśli powyższe linijki znajdą się w pliku HelloWorld.hs, to można go skompilować komendą: ghc --make HelloWorld.hs a potem uruchomić: c:\&#62;HelloWorld.exe Hello world c:\&#62;_ Gotowe!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=454&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Kompilacja programów przy użyciu GHC jest bardzo prosta. Należy dodać opcję <code>--make</code> i gotowe.</p>
<p>Potrzebujemy najpierw źródła zawierającego funkcję <code>main</code>, na przykład:</p>
<pre>
main = putStrLn "Hello world"
</pre>
<p>Jeśli powyższe linijki znajdą się w pliku <code>HelloWorld.hs</code>, to można go skompilować komendą:</p>
<pre>
ghc --make HelloWorld.hs
</pre>
<p>a potem uruchomić:</p>
<pre>
c:\&gt;HelloWorld.exe
Hello world
c:\&gt;_
</pre>
<p>Gotowe!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/454/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/454/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/454/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=454&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/11/25/haskell-kompilacja-do-exe/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Używanie funkcji map</title>
		<link>http://gracjanpolak.wordpress.com/2010/11/21/uzywanie-funkcji-map/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/11/21/uzywanie-funkcji-map/#comments</comments>
		<pubDate>Sun, 21 Nov 2010 21:09:39 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=450</guid>
		<description><![CDATA[Funkcja map każdy element na liście zamienia na inny element, obliczony jako funkcja oryginalnego. Przykład: &#62; map (+2) [1,5,10] [3,7,12] ogólnie: map f [x1, x2, ...] == [f x1, f x2, ...] Ciekawą własnością funkcji map jest to, że nie zmienia ona struktury. Znaczy to, że długość listy wynikowej będzie taka sama jak listy-argumentu. Warto [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=450&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Funkcja <a href="http://hackage.haskell.org/packages/archive/haskell98/latest/doc/html/List.html#v:map"><code>map</code></a> każdy element na liście zamienia na inny element, obliczony jako funkcja oryginalnego.</p>
<p>Przykład:</p>
<pre>
&gt; map (+2) [1,5,10]
[3,7,12]
</pre>
<p>ogólnie:</p>
<pre>
map f [x1, x2, ...] == [f x1, f x2, ...]
</pre>
<p>Ciekawą własnością funkcji map jest to, że nie zmienia ona struktury. Znaczy to, że długość listy wynikowej będzie taka sama jak listy-argumentu.</p>
<p>Warto w tym miejscu wspomnieć o dwóch pochodnych funkcji <code>map</code>. Jedna to <a href="http://hackage.haskell.org/packages/archive/haskell98/latest/doc/html/Monad.html#v:mapM"><code>mapM</code></a>:</p>
<pre>
mapM :: Monad m =&gt; (a -&gt; m b) -&gt; [a] -&gt; m [b]
</pre>
<p>która zasadniczo działa tak jak <code>map</code>, ale przy okazji podmiany każdego elementu pozwala na efekty uboczne (w monadzie).</p>
<p>Druga to <a href="http://hackage.haskell.org/packages/archive/haskell98/latest/doc/html/Monad.html#t:Functor"><code>fmap</code></a>, funkcja klasy <a href="http://hackage.haskell.org/packages/archive/haskell98/latest/doc/html/Monad.html#t:Functor"><code>Functor</code></a>, która jest uogólnieniem powyższej koncepcji do działania na dowolnej strukturze. Przykład:</p>
<pre>
&gt; fmap (+2) (Nothing)
Nothing
&gt; fmap (+2) (Just 5)
Just 7
</pre>
<p>Co jeszcze warto wiedzieć o <code>map</code>, <code>fmap</code>, <code>mapM</code> i podobnych?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/450/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/450/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/450/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=450&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/11/21/uzywanie-funkcji-map/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Liczby pierwsze</title>
		<link>http://gracjanpolak.wordpress.com/2010/10/25/liczby-pierwsze/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/10/25/liczby-pierwsze/#comments</comments>
		<pubDate>Mon, 25 Oct 2010 20:33:37 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=446</guid>
		<description><![CDATA[Najprostszy sposób na wygenerowanie liczb pierwszych: primes :: [Integer] primes = sieve [2..] where sieve (p:xs) = p : sieve [x &#124; x &#60;- xs, x `mod` p /= 0] Stała primes jest nieskończoną listą liczb, dlatego warto skorzystać tylko z kilku jej elementów: print (take 5 primes) Więcej na temat liczb pierwszych na stronie [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=446&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Najprostszy sposób na wygenerowanie liczb pierwszych:</p>
<pre>
primes :: [Integer]
primes = sieve [2..]
    where
        sieve (p:xs) = p : sieve [x | x &lt;- xs, x `mod` p /= 0]
</pre>
<p>Stała <code>primes</code> jest nieskończoną listą liczb, dlatego warto skorzystać tylko z kilku jej elementów:</p>
<pre>
print (take 5 primes)
</pre>
<p>Więcej na temat liczb pierwszych na stronie <a href="http://www.haskell.org/haskellwiki/Prime_numbers">Prime numbers</a>.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/446/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/446/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/446/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=446&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/10/25/liczby-pierwsze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Liczenie elementów listy</title>
		<link>http://gracjanpolak.wordpress.com/2010/10/18/liczenie-elementow-listy/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/10/18/liczenie-elementow-listy/#comments</comments>
		<pubDate>Mon, 18 Oct 2010 18:17:15 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Google]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=439</guid>
		<description><![CDATA[Dziś początek nowej serii postów: odpowiedzi na pytania wyszukiwarek. WordPress podpowiada jakie zapytanie pozwoliło znaleźć mojego bloga. Skoro jest pytanie, będzie zatem odpowiedź! Pytanie na dziś: &#8222;liczenie elementów listy haskell&#8221;. Odpowiedź: funkcja length. Można jej użyć tak: GHCi, version 6.12.1: http://www.haskell.org/ghc/ :? for help Prelude&#62; print (length [1,2,3]) 3 Warto jeszcze sprawdzić typ tej funkcji: [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=439&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dziś początek nowej serii postów: odpowiedzi na pytania wyszukiwarek. WordPress podpowiada jakie zapytanie pozwoliło znaleźć mojego bloga. Skoro jest pytanie, będzie zatem odpowiedź!</p>
<p>Pytanie na dziś: &#8222;liczenie elementów listy haskell&#8221;.</p>
<p>Odpowiedź: funkcja <a href="http://hackage.haskell.org/packages/archive/haskell98/latest/doc/html/List.html#v:length">length</a>. Można jej użyć tak:</p>
<pre>
GHCi, version 6.12.1: http://www.haskell.org/ghc/  :? for help
Prelude&gt; print (length [1,2,3])
3
</pre>
<p>Warto jeszcze sprawdzić typ tej funkcji:</p>
<pre>
Prelude&gt; :t length
length :: [a] -&gt; Int
</pre>
<p>Ciekawe czy statystyki wizyt na blogu podskoczą :)</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/439/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/439/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/439/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=439&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/10/18/liczenie-elementow-listy/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Monadic ACID</title>
		<link>http://gracjanpolak.wordpress.com/2010/10/07/monadic-acid/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/10/07/monadic-acid/#comments</comments>
		<pubDate>Thu, 07 Oct 2010 13:25:43 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=433</guid>
		<description><![CDATA[Happstack zawiera ciekawą propozycję trwałości danych nazwaną Monadic ACID. Nie jest to ani RDMS, ani noSQL. Myślę, że MACID to ciekawa propozycja w dziedzinie trwałości danych. Poniżej króta instrukcja, jak korzystać z MACID w Happstack. Zadeklaruj dane: &#62; $(deriveAll [''Show, ''Eq, ''Ord, ''Default] &#62; [d&#124; &#62; -- &#124;GuestBookEntry: simple guest book entry &#62; data GuestBookEntry [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=433&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Happstack zawiera ciekawą propozycję trwałości danych nazwaną Monadic ACID. Nie jest to ani <a href="http://en.wikipedia.org/wiki/Relational_databases">RDMS</a>, ani <a href="http://en.wikipedia.org/wiki/NoSQL">noSQL</a>. Myślę, że MACID to ciekawa propozycja w dziedzinie trwałości danych. Poniżej króta instrukcja, jak korzystać z MACID w Happstack.</p>
<p>Zadeklaruj dane:</p>
<pre><span>&gt;</span> <span>$</span><span style="color:red;">(</span><span>deriveAll</span> <span style="color:red;">[</span><span style="color:teal;">'</span><span style="color:teal;">'</span><span>Show</span><span style="color:red;">,</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>Eq</span><span style="color:red;">,</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>Ord</span><span style="color:red;">,</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>Default</span><span style="color:red;">]</span>
<span>&gt;</span>  <span style="color:red;">[</span><span>d</span><span style="color:red;">|</span>
<span>&gt;</span>      <span style="color:green;">-- |GuestBookEntry: simple guest book entry</span>
<span>&gt;</span>      <span style="color:blue;font-weight:bold;">data</span> <span>GuestBookEntry</span> <span style="color:red;">=</span> <span>GuestBookEntry</span>
<span>&gt;</span>          <span style="color:red;">{</span> <span>author</span>  <span style="color:red;">::</span> <span>String</span>
<span>&gt;</span>          <span style="color:red;">,</span> <span>message</span> <span style="color:red;">::</span> <span>String</span>
<span>&gt;</span>          <span style="color:red;">,</span> <span>date</span>    <span style="color:red;">::</span> <span>ClockTime</span>
<span>&gt;</span>          <span style="color:red;">}</span>
<span>&gt;</span>
<span>&gt;</span>      <span style="color:green;">-- |GuestBook: a list of GuestBookEntry</span>
<span>&gt;</span>      <span style="color:blue;font-weight:bold;">newtype</span> <span>GuestBook</span> <span style="color:red;">=</span> <span>GuestBook</span> <span style="color:red;">{</span> <span>guestBookEntries</span> <span style="color:red;">::</span> <span style="color:red;">[</span><span>GuestBookEntry</span><span style="color:red;">]</span> <span style="color:red;">}</span>
<span>&gt;</span>   <span style="color:red;">|</span><span style="color:red;">]</span><span style="color:red;">)</span>
</pre>
<p>Zapewnij trwałość i wersjonowanie obiektów:</p>
<pre><span>&gt;</span> <span>$</span><span style="color:red;">(</span><span>deriveSerialize</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>GuestBookEntry</span><span style="color:red;">)</span>
<span>&gt;</span> <span style="color:blue;font-weight:bold;">instance</span> <span>Version</span> <span>GuestBookEntry</span>
<span>&gt;</span>
<span>&gt;</span> <span>$</span><span style="color:red;">(</span><span>deriveSerialize</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>GuestBook</span><span style="color:red;">)</span>
<span>&gt;</span> <span style="color:blue;font-weight:bold;">instance</span> <span>Version</span> <span>GuestBook</span>
</pre>
<p>Przykładowa funkcja zapytania do bazy danych:</p>
<pre><span>&gt;</span> <span>readGuestBook</span> <span style="color:red;">::</span> <span>Query</span> <span>GuestBook</span> <span>GuestBook</span>
<span>&gt;</span> <span>readGuestBook</span> <span style="color:red;">=</span> <span>ask</span>
</pre>
<p>Przykładowa procedura modyfikacji bazy danych:</p>
<pre><span>&gt;</span> <span>addGuestBookEntry</span> <span style="color:red;">::</span> <span>GuestBookEntry</span> <span style="color:red;">-&gt;</span> <span>Update</span> <span>GuestBook</span> <span>()</span>
<span>&gt;</span> <span>addGuestBookEntry</span> <span>e</span> <span style="color:red;">=</span> <span>modify</span> <span>$</span> <span style="color:red;">\</span><span style="color:red;">(</span><span>GuestBook</span> <span>gb</span><span style="color:red;">)</span> <span style="color:red;">-&gt;</span> <span style="color:red;">(</span><span>GuestBook</span> <span style="color:red;">(</span><span>e</span><span>:</span><span>gb</span><span style="color:red;">)</span><span style="color:red;">)</span>
</pre>
<p>Co ciekawe powyższe dwie funkcje mogą być dowolnie skomplikowane i używać pełnej gamy możliwości Haskella, co czyni z nich potężne <a href="http://en.wikipedia.org/wiki/Stored_procedure">procedury składowane</a>.</p>
<p>Teraz stwórz listę metod, których będziesz używać do interakcji z bazą danych. Na tej liście muszą się znaleźć wszystkie przewidziane zapytania oraz modyfikacje.</p>
<pre><span>&gt;</span> <span>$</span><span style="color:red;">(</span><span>mkMethods</span> <span style="color:teal;">'</span><span style="color:teal;">'</span><span>GuestBook</span> <span style="color:red;">[</span><span style="color:teal;">'</span><span>readGuestBook</span><span style="color:red;">,</span> <span style="color:teal;">'</span><span>addGuestBookEntry</span><span style="color:red;">]</span><span style="color:red;">)</span>
</pre>
<p>Rekord <code>GuestBook</code> zadeklaruj jako komponent aplikacji:</p>
<pre><span>&gt;</span> <span style="color:green;">-- |make Guestbook its own Component</span>
<span>&gt;</span> <span style="color:blue;font-weight:bold;">instance</span> <span>Component</span> <span>GuestBook</span> <span style="color:blue;font-weight:bold;">where</span>
<span>&gt;</span>   <span style="color:blue;font-weight:bold;">type</span> <span>Dependencies</span> <span>GuestBook</span> <span style="color:red;">=</span> <span>End</span>
<span>&gt;</span>   <span>initialValue</span> <span style="color:red;">=</span> <span>defaultValue</span>
</pre>
<p>Modyfikacje bazy danych wykonuje się przy użyciu konstrukcji <code>update</code>:</p>
<pre><span>&gt;</span> <span style="color:blue;font-weight:bold;">let</span> <span>entry</span> <span style="color:red;">=</span> <span>GuestBookEntry</span> <span style="color:red;">{</span><span>...</span><span style="color:red;">}</span>
<span>&gt;</span> <span>update</span> <span>$</span> <span>AddGuestBookEntry</span> <span>entry</span>
</pre>
<p>A zapytania przy użyciu <code>query</code>:</p>
<pre><span>&gt;</span> <span>guestBook</span>  <span style="color:red;">&lt;-</span> <span>query</span> <span>$</span> <span>ReadGuestBook</span>
<span>&gt;</span> <span>showAsHtml</span> <span>guestBook</span>
</pre>
<p>Różnica między <code>query</code> a <code>update</code> jest prosta: <code>query</code> nie modyfikuje zawartości bazy danych, natomiast <code>update</code> ma taką możliwość. Obie funkcje są synchronizowane na bazie danych, jednak <code>update</code> jest również trwałe (ale przez to wolniejsze).</p>
<p>Moje doświadczenie z MACID sugerują następującą listę zalet i wad:</p>
<p>Zalety:</p>
<ul>
<li>nie trzeba ustawiać bazy SQL</li>
<li>dane są statycznie typowane</li>
<li><a href="http://en.wikipedia.org/wiki/Query_language">językiem zapytań</a> jest Haskell</li>
<li><a href="http://en.wikipedia.org/wiki/Stored_procedure">językiem procedur składowanych</a> jest również Haskell</li>
</ul>
<p>Wady:</p>
<ul>
<li>rozmiar danych ograniczony wielkością dostępnej pamięci</li>
<li>nie jest to architektura rozproszona</li>
</ul>
<p>Z praktyki wiem, że MACID w wydaniu Happstack jest idealny do rozpoczęcia pracy nad aplikacją internetową. Odpada problem administracji zewnętrznej bazy danych!</p>
<p>Zaś gdy ilość danych urośnie, będzie można z pełną świadomością wybrać architekturę: czy standardowa relacyjna baza danych, czy coś z dziedziny noSQL, a może jakaś hybryda?</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/433/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/433/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/433/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=433&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/10/07/monadic-acid/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Haskell praca: SkrivaPå</title>
		<link>http://gracjanpolak.wordpress.com/2010/09/09/haskell-praca-skrivapa/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/09/09/haskell-praca-skrivapa/#comments</comments>
		<pubDate>Thu, 09 Sep 2010 19:42:24 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=422</guid>
		<description><![CDATA[Poszukujemy jednego albo dwóch programistów do pomocy przy tworzeniu serwisu SkrivaPå, internetowej aplikacji służącej do podpisywania dokumentów przez Internet oraz ogólnie zarządzania procesami kontrakcyjnymi dla biznesu. Jesteśmy dobrze zapowiadającym się startupem polsko-szwedzkim w czasie bardzo szybkiego rozwoju. Mamy nadzieję na wspólną zabawę Haskellem oraz Twój kreatywny wkład. Będziesz pracował(a) na swoim komputerze, w dowolnym miejscu [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=422&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Poszukujemy jednego albo dwóch programistów do pomocy przy tworzeniu serwisu SkrivaPå, internetowej aplikacji służącej do podpisywania dokumentów przez Internet oraz ogólnie zarządzania procesami kontrakcyjnymi dla biznesu. Jesteśmy dobrze zapowiadającym się startupem polsko-szwedzkim w czasie bardzo szybkiego rozwoju. Mamy nadzieję na wspólną zabawę Haskellem oraz Twój kreatywny wkład.</p>
<p>Będziesz pracował(a) na swoim komputerze, w dowolnym miejscu świata. Jeśli mieszkasz w Sztokholmie to możesz nawet w naszym biurze. W Krakowie zaś możemy umówić się w kawiarni. Jak przystało na firmę internetową będziemy się porozumiewać głównie przez Google Docs, Skype oraz email.</p>
<p>Warunki<br />
Start: jak najszybciej<br />
Czas trwania: 3 miesiące<br />
Płaca: do negocjacji<br />
Godziny: 20h-40h tygodniowo (chętnie również studenci)</p>
<p>Aktualnie używane technologie to głównie:</p>
<p><a href="http://ubuntu.pl/">Linux</a><br />
<a href="http://haskell.org/">Haskell</a><br />
<a href="http://happstack.com/">Happstack</a></p>
<p>Jeśli tak ja my uwielbiasz Haskella, napisz do nas!</p>
<p>Kontakt: autor tego bloga.</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/422/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/422/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/422/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=422&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/09/09/haskell-praca-skrivapa/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Platformy webowe dla Haskella</title>
		<link>http://gracjanpolak.wordpress.com/2010/05/22/platformy-webowe-dla-haskella/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/05/22/platformy-webowe-dla-haskella/#comments</comments>
		<pubDate>Sat, 22 May 2010 21:43:00 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=419</guid>
		<description><![CDATA[Haskell może jeszcze nie ma swoich Railsów, ale za to prawdopodobnie jest językiem, który posiada najwięcej web frameworków. Dzielą się one na dwie kategorie: niedokończone oraz porzucone. Krótki przegląd alfabetyczny: Hack Happstack Haskell Server Pages Salvia Snap Turbinado Web Authoring System Haskell Yesod Zobaczymy, która platforma okaże się zwycięska!<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=419&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Haskell może jeszcze nie ma swoich Railsów, ale za to prawdopodobnie jest językiem, który posiada najwięcej web frameworków. Dzielą się one na dwie kategorie: niedokończone oraz porzucone. Krótki przegląd alfabetyczny:</p>
<ol>
<li><a href="http://hackage.haskell.org/package/hack">Hack</a>
<li><a href="http://happstack.com">Happstack</a>
<li><a href="http://www.haskell.org/haskellwiki/HSP">Haskell Server Pages</a>
<li><a href="http://hackage.haskell.org/package/salvia">Salvia</a>
<li><a href="http://snapframework.com/">Snap</a>
<li><a href="http://turbinado.org">Turbinado</a>
<li><a href="http://www.informatik.uni-freiburg.de/~thiemann/WASH/">Web Authoring System Haskell</a>
<li><a href="http://yesodweb.com/">Yesod</a>
</ol>
<p>Zobaczymy, która platforma okaże się zwycięska!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/419/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/419/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/419/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=419&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/05/22/platformy-webowe-dla-haskella/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
		<item>
		<title>Instalacja GHC w wersji minimalnej</title>
		<link>http://gracjanpolak.wordpress.com/2010/05/17/instalacja-ghc-w-wersji-minimalnej/</link>
		<comments>http://gracjanpolak.wordpress.com/2010/05/17/instalacja-ghc-w-wersji-minimalnej/#comments</comments>
		<pubDate>Mon, 17 May 2010 15:31:26 +0000</pubDate>
		<dc:creator>gracjanpolak</dc:creator>
				<category><![CDATA[Haskell]]></category>

		<guid isPermaLink="false">http://gracjanpolak.wordpress.com/?p=413</guid>
		<description><![CDATA[Dzisiaj zainstalujemy najnowsze GHC 6.12.2 oraz Happstack na czystej maszynie Ubuntu 8 (gdyż taką mam dostępną). Użylibyśmy Haskell Platform, ale ponieważ chcemy mieć najnowszy kompilator, więc instalację przeprowadzimy ręcznie. Najpierw zainstalujemy potrzebne pakiety systemowe. Ja do ich listy doszedłem metodą prób i błędów: sudo apt-get install libc6-dev libgmp3c2 zlib1g-dev libgmp3c2-devel W Linuxie nic nie może [...]<img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=413&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></description>
			<content:encoded><![CDATA[<p>Dzisiaj zainstalujemy najnowsze <a href="http://haskell.org/ghc/">GHC 6.12.2</a> oraz <a href="http://happstack.com/">Happstack </a>na czystej maszynie Ubuntu 8 (gdyż taką mam dostępną). Użylibyśmy <a href="http://hackage.haskell.org/platform/">Haskell Platform</a>, ale ponieważ chcemy mieć najnowszy kompilator, więc instalację przeprowadzimy ręcznie.</p>
<p>Najpierw zainstalujemy potrzebne pakiety systemowe. Ja do ich listy doszedłem metodą prób i błędów:</p>
<pre>
sudo apt-get install libc6-dev libgmp3c2 zlib1g-dev libgmp3c2-devel
</pre>
<p>W Linuxie nic nie może po prostu działać, więc poprawimy jedną drobnostkę:</p>
<pre>
pushd /usr/lib
sudo ln -s libgmp.so.3 libgmp.so
popd
</pre>
<p>Ściągamy binarną dystrybucję GHC, konfigurujemy oraz instalujemy w katalogu użytkownika:</p>
<pre>
wget http://haskell.org/ghc/dist/6.12.2/ghc-6.12.2-i386-unknown-linux-n.tar.bz2
tar -xjf ghc-6.12.2-i386-unknown-linux-n.tar.bz2
cd ghc-6.12.2
./configure --prefix=/home/admin
make install
</pre>
<p>Od teraz w katalogu <code>~/bin</code> będą znajdować się wszystkiego programy związane z Haskellem. Dodajemy ten katalog do zmiennej <code>PATH</code>:</p>
<pre>
echo 'export PATH=$PATH:/home/admin/bin' &gt;&gt; .bashrc
. .bashrc
</pre>
<p>Teraz zainstalujemy manager pakietów <code>Cabal</code>:</p>
<pre>
wget http://www.haskell.org/cabal/release/cabal-install-0.8.2/cabal-install-0.8.2.tar.gz
tar -xzf cabal-install-0.8.2.tar.gz
cd cabal-install-0.8.2
bash bootstrap.sh
</pre>
<p>Po kompilacji w katalogu <code>~/.cabal/bin</code> powinien znaleźć się wykonywalny program <code>cabal</code>. Żeby było łatwiej tworzymy dowiązanie symboliczne do katalogu <code>~/bin</code>:</p>
<pre>
ln -s .cabal/bin/cabal /home/admin/bin
</pre>
<p>Teraz pierwsze uruchomienie i inicjalizacja:</p>
<pre>
cabal update
</pre>
<p>Powstał początkowy plik <code>~/.cabal/config</code>, dodajemy do niego flagę, która programy zbudowane w <code>~/.cabal/bin</code> automatycznie dowiąże do <code>~/bin</code>:</p>
<pre>
echo symlink-bindir: /home/admin/bin &gt;&gt; ~/.cabal/config
</pre>
<p>Zainstalujmy jeszcze coś ciekawego. Najpierw <code>happy </code>(gdyż jest potrzebny dla <code>happstack</code>):</p>
<pre>
cabal install happy
</pre>
<p>A teraz <code>happstack</code>:</p>
<pre>
cabal install happstack
</pre>
<p>Minimalna instalacja Haskella dla web developmentu gotowa!</p>
<br />  <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gocomments/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/comments/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godelicious/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/delicious/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gofacebook/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/facebook/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gotwitter/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/twitter/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/gostumble/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/stumble/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/godigg/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/digg/gracjanpolak.wordpress.com/413/" /></a> <a rel="nofollow" href="http://feeds.wordpress.com/1.0/goreddit/gracjanpolak.wordpress.com/413/"><img alt="" border="0" src="http://feeds.wordpress.com/1.0/reddit/gracjanpolak.wordpress.com/413/" /></a> <img alt="" border="0" src="http://stats.wordpress.com/b.gif?host=gracjanpolak.wordpress.com&amp;blog=6199541&amp;post=413&amp;subd=gracjanpolak&amp;ref=&amp;feed=1" width="1" height="1" />]]></content:encoded>
			<wfw:commentRss>http://gracjanpolak.wordpress.com/2010/05/17/instalacja-ghc-w-wersji-minimalnej/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
	
		<media:content url="" medium="image">
			<media:title type="html">gracjanpolak</media:title>
		</media:content>
	</item>
	</channel>
</rss>
