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.