kjedsommelighetskode


onsdag 6. april 2011 Clojure

Åååå, som jeg hater influensa!!! Nå ha jeg ligget i sofaen i fem dager og kjedet meg. Men jeg må innrømme jeg har fått til å kode litt. Ikke så mye nyttig nødvendigvis, men jeg har nå fått løst noen Euler-problemer, og knotet litt med ett og annet hobby-prosjekt.

Noe av det aller minst nyttige en kan lage er hello-world-programmer. Og da tenker jeg ikke på den enkle sorten. I et orntlig hello-world-program skal det ikke være så enkelt å se hvordan det faktisk virker. Alt er lov, det eneste kriteriet er at programmets nøyaktige output er teksten “Hello, World!”.

Her er et jeg konstruerte i dag..

10             ;==-----\\
11             ;        \\\
12             ;         \\\\
13 (ns ,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
14  ,  hello                                ,,,
15   ,     (:use clojure.repl)                 ,,,
16    ,        (:require clojure.string))         ,,,
17     ,           ((defn                            ,,,
18      ,              Hello-World!  [ by Tormaroe ]    ,,,
19     ,           (println                          ,,,
20    ,        (clojure.string/replace            ,,,
21   ,     (first                              ,,,
22  ,  (dir-fn 'hello))                     ,,,
23 #"-" ", "))) 00 00) ,,,,,,,,,,,,,,,,,,,,
24             ;         ////
25             ;        ///
26             ;==-----//

Ja, det er et gyldig clojure-program. Og selv om det ser tullete ut så går det faktisk an å lære noe av dette også - hvis du klarer å tyde hvordan det virker så vil jeg si du har kommet et godt stykke på vei til å bli en god clojure-utvikler.

Her er en litt annen variant..

 1 ;; a program saying hello to the world
 2 (use '[clojure.string :only (join)])
 3 (let [a (partial subs (slurp *file*))]
 4   (print (join ", " (map #(a % (+ % 5)) [20 33]))))

Klarer du å gjette deg til hva den gjør? Eller hva med den neste..?

 1 (->>
 2   (map #(nth (str %) %2)
 3        '(hash dec nil? apply symbol?
 4               " , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , "
 5               " , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , "
 6               remove-watch comporator print-ctor bit-shift-left chunk-append)
 7        (range))
 8   (apply str)
 9   print)

Litt fornøyd med den faktisk. Og i tre små programsnutter har jeg faktisk klart å vise ganske masse, grunnleggende Clojure.

Disse programmene finner du også på hello-world-tråden på norsk freakforum, sammen med en rekke andre, interessange bidrag i ulike språk.


comments powered by Disqus