idiom

ColdFusion: pick first non null value from a list

In JavaScript, you can do this: var a = null; var b = "I'm a value"; var c = null; var result = a || b || c; And 'result' will get the value of 'b' because JavaScript short-circuits the 'or' operator. I want a one-line idiom to do this in ColfFusion and the best I can come up with is: <cfif LEN(c) GT 0><cfset result=c></cfif> <cfif ...

How do I manipulate $PATH elements in shell scripts?

Is there a idiomatic way of removing elements from PATH-like shell variables? That is I want to take PATH=/home/joe/bin:/usr/local/bin:/usr/bin:/bin:/path/to/app/bin:. and remove or replace the /path/to/app/bin without clobbering the rest of the variable. Extra points for allowing me put new elements in arbitrary positions. The targe...

For loop construction and code complexity

My group is having some discussion and strong feelings about for loop construction. I have favored loops like: size_t x; for (x = 0; x < LIMIT; ++x) { if (something) { break; } ... } // If we found what we're looking for, process it. if (x < LIMIT) { ... } But others seem to prefe...

Programming idiom to parse a string in multiple-passes

I'm working on a Braille translation library, and I need to translate a string of text into braille. I plan to do this in multiple passes, but I need a way to keep track of which parts of the string have been translated and which have not, so I don't retranslate them. I could always create a class which would track the ranges of positi...

Microsoft VBA idiom (Visio) For Testing Non-Existance of a property?

I need to ensure a Macro which works on Visio 2003 doesn't cause problems on lower versions of Visio: specifically because I'm writing to a property which doesn't exist on lower versions of Visio. Currently I'm doing this: ... On Error GoTo NoComplexScriptFont: Set cellObject = shapeObject.Cells("Char.ComplexScriptFont") On Error GoTo E...

Ruby: Nicer way of doing this : script to run against stdin if no arg; otherwise input file =ARGV[0].

This works quite nicely - just wondered if there are any improvements to shorten it ? if (ARGV[0].nil?) then input=$< else input=File.new(ARGV[0],"r"); end ... # Do something with the input here, for example: input.each_line do |line| puts line end ...

Why is the recursion idiom in Haskell "'n+1' and 'n'" and not "'n' and 'n-1'"?

I'm working my way through Graham Hutton's Haskell book, and in his recursion chapter, he often pattern-matches on "n+1", as in: myReplicate1 0 _ = [] myReplicate1 (n+1) x = x : myReplicate1 n x Why that and not the following, which (1) seems functionally identical and (2) more intuitive in terms of understanding what's happening with...