Re: [[email protected]: Re: backtracking HTML templating]

Dave Long <[email protected]> Sat, 14 Apr 2012 00:52:39 +0200
Newsgroups gmane.culture.people.kragen.discuss
Message-ID <[email protected]>
>> Alternatively, you could do backtracking with MonadPlus in  
>> Haskell ...

NB that although MonadPlus has a name in Haskell, it may also exist  
somewhat more anonymously in other programming environments.

For instance, a Posix shell has at least two different ways to handle  
the desired sum-of-products constructions: parameter expansions and  
conditional expressions.

	"interpolate $foo and $bar conjunctively"  => echo ${foo:+${bar: 
+"interpolate $foo and $bar conjunctively"}}
	"interpolate $foo and $bar conjunctively" => [[ $foo && $bar ]] &&  
echo "interpolate $foo and $bar conjunctively"

	"disjunction of $foo" | "or of $bar" => x=;x=${x:-${foo: 
+"disjunction of $foo"}};x=${x:-${bar:+"or of $bar"}};echo $x
	"disjunction of $foo" | "or of $bar" => { [[ $foo ]] && echo  
"disjunction of $foo" ;} || { [[ $bar ]] && echo "or of $bar" ;}

(I believe Kragen's <if... construction requires the conditional  
expression form, although simple presence/absence can be handled in  
the parameter expansion form.  Array mapping and the comma operator  
(as well as the algorithmic extraction of variable names from an  
interpolation in order to automatically generate the proper guards!)  
are left as an exercise for the reader...)

-Dave

-- 
To unsubscribe: http://lists.canonical.org/mailman/listinfo/kragen-discuss