Comma Quibbling
Link: http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx
An example in kin. This misses the difficulty of the C# problem - as sequences in kin are linear, rather than being the mutating iterator/enumerator pattern used in Java/C#, you can pattern match several elements at once trivially (being able to pattern match sequences and backtrack on failure is one of the main reasons for writing kin in the first place).
module examples::eric_lippert_20090415
# http://blogs.msdn.com/ericlippert/archive/2009/04/15/comma-quibbling.aspx
def comma_append ( out, s )
match s
h :: [] =>
out <- h
h :: m :: [] =>
out <- h <- " and " <- m
h :: t =>
out <- h <- ", "
comma_append ( out, t )
[] =>
pass
def write_with_commas ( out, s )
out <- '{'
comma_append ( out,s )
out <- '}'
=> out
def to_comma_string ( s ) => write_with_commas( string_writer(), s ).str()
def main ( in, out, args )
write_with_commas ( out, args )
out <- '\n'
out <- to_comma_string( args ) <- '\n'
Labels: code-challenge, kin, programming