Adam,
Good job. You answered the question I asked. Thank you.
Everyone else,
Yes, I told you I could usually come up with ways around what I was
asking for, but there could be problems with what you have suggested. I
haven't had time to do more detailed testing, so there might be more use
cases where what you are suggesting won't work.
I think where not having something like Lua's unpack function could be
problematic is in control structures when you have a variable number of
arguments. Using the language that I started this discussion with F is
the cond function. The seq A can have a variable number of elements
depending on user input: A1 = [true 1 false 2], or A2= [false 1 false
2 true 3 false 4], where A1 and A2 are two different possible A.
In this case like this I believe destructing is right out.
Further, apply won't work either. Try one of these:
(apply cond [true 1 false 2])
(apply 'cond [true 1 false 2])
On cond you can get around this by using
(eval (cons 'cond [true 1 false 2]))
But so far I haven't come up with a way of doing this in core.logic's
conde. Neither of these work. Of course this could be because my
understanding of core.logic is not that great.
(run* [x]
(apply 'conde
[[(== "tea" x) s#]
[(== "cup" x) u#]]))
(run* [x]
(eval (cons 'conde
[[(== "tea" x) s#]
[(== "cup" x) u#]])))
On Tuesday, November 6, 2012 11:36:31 AM UTC-5, the80srobot wrote:
>
> If I understand this right, you're looking for something like Lua's unpack
> function. AFAIK you will not be able to do this in Clojure using functions,
> because Clojure functions can only return one argument. The only way to
> achieve this behavior would by by transforming your calls using reader
> macros and then eval. I do not recommend doing this.
>
> I understand that something like unpack is a more general case of apply,
> but I can't think of any scenario where apply isn't enough - out of
> interest, what are you trying to do?
>
> -Adam
>
>
>
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en