librelist archives

« back to archive

joxa y readable

joxa y readable

From:
Mariano Guerra
Date:
2012-08-27 @ 08:05
buenas!

dos cositas, la primera, conocen joxa?

http://joxa.org/

dos, se me ocurrio una cosa, si no te gusta el lispy flavour podes usar readable
(http://readable.sourceforge.net/) para usar una syntaxis mas amistosa

ejemplo:

➜  ~  cat joxa.jx    
(ns sieve-of-eratosthenes
        (require lists io)
        (use (joxa-core :as core :only (!=/2))
             (erlang :only (rem/2 +/2))))

(defn sieve (v primes)
  (case v
    ([] primes)
    ((h . t)
      (sieve  (lists/filter (fn (x)
                             (!= (rem x h) 0)) t)
              (+ primes 1)))))

(defn+ sieve (v)
  (sieve (lists/seq 2 v) 1))

➜  ~  sweeten joxa.jx
ns
  sieve-of-eratosthenes
  require lists io
  use
    joxa-core :as core :only !=/2()
    erlang :only rem/2(+/2)

defn
  sieve
  v primes
  case v
    [] primes
    h( . t)
      sieve lists/filter(fn(x() {rem(x h) != 0}) t) {primes + 1}

defn+ sieve v() sieve(lists/seq(2 v) 1)

et voila!

obvio que sweeten no hace todo magicamente, unsweeten es el inverso, que es el
que usariamos para convertir lo segundo a lo primero y tendriamos en cuenta
algunas reglas de readable para que convierta correctamente)

saludos!