Page 1 of 1

new language; Julia

PostPosted: Fri Mar 09, 2012 6:29 am
by Jasper
Searched for the word in the forum, did not find it. So i thought i'd post about it. This was their 'introductionary blog post, you may have seen it from other places.

Basically Julia is a lisp, if you look at metaprogramming for a description. Basically, code afaics consists of Expr objects. It takes a little getting used to, but it can basically do arbitrary stuff.(And arbitrarilly bad too as we know, but competence is up to the developer.) For illustration, below a macro:
Code: Select all
function destructuring_bind_fun(args, array, body, n)
  if length(args) == 0 #No variables to fill, done.
    return body
  else if isa(args[1], Symbol)
    return quote
      $(args[1]) = ($array)[$n]
      $(destructuring_bind_fun(args[2:],array, body, n+1))
    end
  else
    a = gensym()
    return quote
      $a = ($array)[$n]
      $(destructuring_bind_fun(args[1].args,a,
         quote $(destructuring_bind_fun(args[2:],array, body, n+1)) end,1))
    end
  end
end
# Due to use of Expr and different styles, `destructuring_bind` wont be as use
# full in Julia as in the lisps. (Maybe a `destructure_expr` might be.)
macro destructuring_bind(args, array, body)
  assert(args.head == :cell1d, # Poor error message.
         "I am a restrictive bitch now so i can be nicer later, promise.")
  return destructuring_bind_fun(args.args, array, body, 1)
end
# Users need to put `@` in front, i think users need to be more first-class.
@destructuring_bind{a,b,{c,d},q} {1,2,{3,4},5} {a,b,c,d,q} #-> 1,2,3,4,5

What do you guys think? I think this is pretty promising.(but early) It does seem to have quirks, i am gathering them as i use it a bit. I also made a wiki page, and trying to get something functionally similar to destructuring-regex in.(edit: i should probably improve that package) They seem to have made little inroads into macros, but of course those aren't always best, and using them a lot hides stuff from the compiler. For the devs right now, at later point it can be copied and altered to make switching from CL easier.(Though it is easy already.)

Re: new language; Julia

PostPosted: Sat Mar 10, 2012 2:37 pm
by findinglisp
I like. I have thought about creating something similar for years. It will be interesting to see what the uptake is like.