From: Romain B. <to...@ra...> - 2009-04-17 13:46:34
|
Le Friday 17 April 2009 09:23:12 Brandon Casci, vous avez écrit : > I've been checking out this script. It's interesting! > > http://savonet.sourceforge.net/doc-svn/dolebrai.html > > What language is the liq script based on? It's unlike anything I'm used to. Well, it is a liquidsoap script, so the language is liquidsoap itself :) > I've read about specific functions in the API docs, but I'm still > unclear. These areas for example > > ############### > > default = single(id="default",default) > > s = > request.dynamic(id="scheduler",default_duration=30.,length=1., > fun () -> > request(get_process_output("#{scripts}/scheduler.pl 2>> > #{scripts}/log"))) > > s = fallback([ request.queue(id="q"), s, default ]) > > ################### > > >> default = single(id="default",default) > > I understand what is happening here, you're taking an individual mp3 > file, and setting up to be a source. > > >> s = > >> request.dynamic(id="scheduler",default_duration=30.,length=1., > >> fun () -> > >> request(get_process_output("#{scripts}/scheduler.pl 2>> > >> #{scripts}/log"))) > > This is a little confusing to me. I understand this is probably the > source which calls a perl script, which queries your database and > outputs a result in the annotated format you mentioned. I don't > understand the purpose of fun(). I noticed fun() is defined in an > add_protocol function, and is setup to take parameters. Though no > parameters are passed in though request.dynamic, at least not in a way > I understand. Can you explain what's happening here? Well, you basically got it right :) fun is a keyword specific to functional language. In fact: fun (x) -> print(x) is "equivalent" to: def f(x) = print(x) end It is not really equivalent in the sense that there can be syntactic side- effects, but that's the idea.. Hence, here: fun () -> request(get_process_output("#{scripts}/scheduler.pl 2>> #{scripts}/log")) Is a function that takes no value and returns a new query. In particular: get_process_output: returns the output of the script. request: create a request based on the output of this script. Romain |