<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xml:base="http://kerneltrap.org"  xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
 <title>Greg Buchholz&#039;s blog</title>
 <link>http://kerneltrap.org/blog/6714</link>
 <description>KernelTrap is a web community devoted to sharing the latest in kernel development news.</description>
 <language>en-local</language>
<item>
 <title>Anyone out there?</title>
 <link>http://kerneltrap.org/node/265041</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;Just testing whether posting still works.  Kerneltrap was offline for a couple of years there, and I see that no one has posted anything for quite some time.&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;</description>
 <comments>http://kerneltrap.org/node/265041#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/33">Other</category>
 <pubDate>Sat, 23 Mar 2013 04:01:28 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">265041 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Logical variables in Prolog</title>
 <link>http://kerneltrap.org/node/17212</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;I came across &lt;a href=&quot;http://coding.derkeiler.com/Archive/Prolog/comp.lang.prolog/2008-05/msg00071.html&quot;&gt;this code&lt;/a&gt;, which was supposed to demonstrate a Prolog program that couldn&#039;t be written in Mercury.  I couldn&#039;t help but rewrite that as:&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
rank(Xs,Rs) :- pairs_keys_values(Decorated,Xs,Rs),
               keysort(Decorated,Sorted),
               numerate(Sorted,1).

numerate([],_).
numerate([_-N|Rest],N) :- N1 is N + 1, numerate(Rest,N1).
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;...This computes the rank order of a list of elements.  For example &lt;code&gt;rank([40,20,50,10],L).&lt;/code&gt; unifies &lt;code&gt;L&lt;/code&gt; with &lt;code&gt;[3,2,4,1]&lt;/code&gt;, since 40 is the third largest element, etc.&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/17212&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/17212#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/30">Applications/tools</category>
 <pubDate>Tue, 23 Jun 2009 03:55:58 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">17212 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Partition a list numerically?</title>
 <link>http://kerneltrap.org/node/17182</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;Over on the Haskell Cafe mailing list, the &lt;a href=&quot;http://www.haskell.org/pipermail/haskell-cafe/2009-March/058483.html&quot;&gt;topic&lt;/a&gt; of which of the following two definitions was better came up:&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
buildPartitions xs ns = zipWith take ns . init $ scanl (flip drop) xs ns
&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;
...or...&lt;br /&gt;
&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
takeList :: [Int] -&amp;gt; [a] -&amp;gt; [[a]]
takeList [] _         =  []
takeList _ []         =  []
takeList (n : ns) xs  =  head : takeList ns tail
     where (head, tail) = splitAt n xs
&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;p&gt;...with various parties declaring the first example as &quot;too smart&quot;, and others claiming that the second example is newbie level code.  Well I&#039;m much too lazy to try to reason out what those snippets might do at a glance.  But the type signature was a pretty big hint as to what the intent was.  So I fired up&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/17182&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/17182#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/33">Other</category>
 <pubDate>Wed, 10 Jun 2009 03:13:42 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">17182 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Non-ugly average in Haskell</title>
 <link>http://kerneltrap.org/node/16735</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;
data E a b = L (E a b) | R b deriving (Show)

fold f acc [] = R acc                      
fold f acc (x:xs) = let x&#039; = f acc x 
                    in x&#039; `seq` (L $ fold f x&#039; xs)

lift2 f = \x y -&amp;gt; par_eval x y
    where par_eval   (L x)   (L y) = par_eval x y
          par_eval x@(R _)   (L y) = par_eval x y
          par_eval   (L x) y@(R _) = par_eval x y
          par_eval   (R x)   (R y) = R $ f x y

lift1 f (L x) = lift1 f x
lift1 f (R x) = R (f x)

sum&#039; xs = fold (+) 0 xs
len&#039; xs = fold (\x y-&amp;gt;succ x) 0 xs
avg  xs =  (sum&#039; xs) / (len&#039; xs)

main = print $ avg [1..1e7]

instance Eq b =&amp;gt; Eq (E a b) where
    a == b = case (lift2 (==) a b) of (R x) -&amp;gt; x

instance Num b =&amp;gt; Num (E a b) where
   (+) = lift2 (+)
   (*) = lift2 (*)
   fromInteger = R . fromInteger
   abs = lift1 abs 
   signum = lift1 signum

instance Fractional b =&amp;gt; Fractional (E a b) where
   (/) = lift2 (/)
   fromRational = R . fromRational

&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/16735&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/16735#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/33">Other</category>
 <pubDate>Sat, 08 Nov 2008 04:01:31 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">16735 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Entering unicode</title>
 <link>http://kerneltrap.org/node/14872</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;Here&#039;s the &lt;a href=&quot;http://sleepingsquirrel.org/unicode/unicode.vim.txt&quot;&gt;configuration&lt;/a&gt; file I use to help me enter some of the fun mathematical unicode characters with vim.  The commands were borrowed from TeX...&lt;/p&gt;
&lt;p&gt;imap jj &amp;lt;ESC&amp;gt;&lt;br /&gt;
imap \div ÷&lt;br /&gt;
imap \times ×&lt;br /&gt;
imap \sum ∑&lt;br /&gt;
imap \int ∫&lt;br /&gt;
imap \oint ∮&lt;br /&gt;
imap \angle ∠&lt;br /&gt;
imap \forall ∀&lt;br /&gt;
imap \exists ∃&lt;br /&gt;
imap \partial ∂&lt;br /&gt;
imap \prod ∏&lt;br /&gt;
imap \infty ∞&lt;br /&gt;
imap \pm ±&lt;br /&gt;
imap \sqrt √&lt;br /&gt;
imap \circ ∘&lt;br /&gt;
imap \Re ℛ&lt;br /&gt;
imap \Im ℑ&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/14872&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/14872#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/30">Applications/tools</category>
 <pubDate>Sat, 24 Nov 2007 00:57:04 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">14872 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Misc. ray tracers</title>
 <link>http://kerneltrap.org/node/14554</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;&lt;img src=&quot;http://sleepingsquirrel.org/ray_trace/out.png&quot; /&gt;&lt;br /&gt;
By &lt;a href=&quot;http://programming.reddit.com/info/2soa9/comments&quot;&gt;popular demand&lt;/a&gt;, here&#039;s the more web accessible versions of a couple of simple ray tracers that I quickly cranked out in &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/ray.txt.html&quot;&gt;Perl&lt;/a&gt; and &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/ray.hs.html&quot;&gt;Haskell&lt;/a&gt;. Along with the respective &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/trace.txt&quot;&gt;source&lt;/a&gt; &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/trace.hs&quot;&gt;code&lt;/a&gt;.  &lt;/p&gt;
&lt;p&gt;It takes a POV-like &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/test.pov&quot;&gt;scene file&lt;/a&gt;, and spits out a *.ppm &lt;a href=&quot;http://sleepingsquirrel.org/ray_trace/out.png&quot;&gt;file&lt;/a&gt; onto STDOUT.&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/14554&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/14554#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/33">Other</category>
 <pubDate>Wed, 10 Oct 2007 21:01:08 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">14554 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Cellular Automata</title>
 <link>http://kerneltrap.org/node/7821</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;After seeing a cellular automata &lt;a href=&quot;http://www.ffconsultancy.com/dotnet/fsharp/rule30/index.html&quot;&gt;simulator&lt;/a&gt; in F#, I thought I&#039;d make a more general version with Perl/TK which was also shorter.  Invoke with a numeric argument on the command line to see automata other than rule 30 (e.g. 90, 110).&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/7821&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/7821#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/30">Applications/tools</category>
 <pubDate>Thu, 08 Mar 2007 22:15:53 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">7821 at http://kerneltrap.org</guid>
</item>
<item>
 <title>SWI-Prolog and Unicode.</title>
 <link>http://kerneltrap.org/node/7731</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;&lt;code&gt;&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;tt&gt;&lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;% fun with SWI-Prolog and Unicode.  Try some queries like... &lt;/font&gt;&lt;/i&gt;
&lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;% Ans ≔ ∫x d x.&lt;/font&gt;&lt;/i&gt;
&lt;i&gt;&lt;font color=&quot;#9A1900&quot;&gt;% Ans ≔ ∫ 2 + x^3 d x.&lt;/font&gt;&lt;/i&gt;

&lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;encoding&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;utf8&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;op&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;699&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; xfy&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; ≔&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;op&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;600&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; fx&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; ∫&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;op&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;510&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; xfx&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; d&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#000000&quot;&gt;op&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;200&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; xf&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; ²&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;

&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;Y&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;Z&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;Y&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;Z&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt; 
&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;Y&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;),&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;Y&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;
&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;   &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;² &lt;font color=&quot;#990000&quot;&gt;/&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;2&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;
&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;^&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;N1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;/&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;N1&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;^&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;N&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;N&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;),&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;N&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;=\=&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;N1&lt;/font&gt; is &lt;font color=&quot;#009900&quot;&gt;N&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt; 
&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;log&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)/&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#993399&quot;&gt;1&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;/(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt; &lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;),&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;exp&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)/&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; ≔ ∫ &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;exp&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;    &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;),&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
∫ &lt;font color=&quot;#009900&quot;&gt;E&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt; ≔ ∫ &lt;font color=&quot;#009900&quot;&gt;E&lt;/font&gt; d &lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;.&lt;/font&gt;

&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;free&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;\+&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;C&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;

&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;+&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;-&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;*&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;/&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;
&lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;^&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;)&lt;/font&gt; &lt;font color=&quot;#990000&quot;&gt;:-&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;A&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;);&lt;/font&gt; &lt;b&gt;&lt;font color=&quot;#0000FF&quot;&gt;bound&lt;/font&gt;&lt;/b&gt;&lt;font color=&quot;#990000&quot;&gt;(&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;B&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;,&lt;/font&gt;&lt;font color=&quot;#009900&quot;&gt;X&lt;/font&gt;&lt;font color=&quot;#990000&quot;&gt;).&lt;/font&gt;

&lt;/tt&gt;&lt;/pre&gt;&lt;p&gt;&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/7731&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/7731#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/30">Applications/tools</category>
 <pubDate>Thu, 15 Feb 2007 18:17:23 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">7731 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Breaking free</title>
 <link>http://kerneltrap.org/node/7536</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;If you really want to &lt;a href=&quot;http://blogs.nubgames.com/code/?p=4&quot;&gt;break free&lt;/a&gt; from the &lt;a href=&quot;http://www.stanford.edu/class/cs242/readings/backus.pdf&quot;&gt;von Neumann bottleneck&lt;/a&gt; , grab yourself an &lt;a href=&quot;http://www.altera.com/products/devkits/altera/kit-cyc2-2C20N.html&quot;&gt;FPGA starter kit&lt;/a&gt; and start playing with Verilog or VHDL.  FPGAs are quite interesting now that features like &lt;a href=&quot;http://www.xilinx.com/products/design_resources/dsp_central/grouping/fpgas4dsp.htm&quot;&gt;hardware&lt;/a&gt; &lt;a href=&quot;http://www.altera.com/products/devices/stratix2/overview/st2-overview.html&quot;&gt;multipliers&lt;/a&gt; are becoming more widespread.&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/7536&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/7536#comments</comments>
 <category domain="http://kerneltrap.org/taxonomy/term/30">Applications/tools</category>
 <pubDate>Fri, 05 Jan 2007 03:27:41 +0000</pubDate>
 <dc:creator>Greg Buchholz</dc:creator>
 <guid isPermaLink="false">7536 at http://kerneltrap.org</guid>
</item>
<item>
 <title>Maybe monad in C++</title>
 <link>http://kerneltrap.org/node/7488</link>
 <description>&lt;!-- google_ad_section_start --&gt;&lt;p&gt;C++ is a complicated language, but it doesn&#039;t have to be &lt;i&gt;&lt;a href=&quot;http://programming.reddit.com/info/v6rx/comments/cv6vb&quot;&gt;that&lt;/a&gt;&lt;/i&gt; complicated.  Here a simple maybe monad implemented in C++...&lt;/p&gt;
&lt;!-- google_ad_section_end --&gt;&lt;p&gt;&lt;a href=&quot;http://kerneltrap.org/node/7488&quot; target=&quot;_blank&quot;&gt;read more&lt;/a&gt;&lt;/p&gt;</description>
 <comments>http://kerneltrap.org/node/7488#comments</comments>
 <category domain="http://kerneltrap.org