6 ms·
Which version of C# are you thinking of? In C# 3, the verbosity level is much less than in C# 2, where it's slightly less than C# 1. I don't see where Ruby sy
by SamReidHughes_ 17y ago
Which version of C# are you thinking of?
In C# 3, the verbosity level is much less than in C# 2, where it's slightly less than C# 1.
I don't see where Ruby syntax is particularly more concise than C# 3's.
Well, let me clarify "particularly". I don't find myself feeling like I'm suffering under C#'s syntax, relative to Haskell's. It has about the same amount of syntactic overhead: writing types for method parameters, and when defining data structures. Occasionally I have to explicitly write a type parameter to a function.
- ansin 17y ago"I don't see where Ruby syntax is particularly more concise than C# 3's." 1.upto(10).each{|x| print x} I'm curious - how would you print 1 through 10 in C# 3 by comparison?
- erlanger 17y agoI still find this clearer: for x in range(1, 10): print x
- ankhmoop 17y agoOne way to do this in Scala: def print[T] (value:T) = System.out.println(value) 1.until(10).foreach(x => print x) This is a fairly uninteresting example, however. Something more interesting would be, for instance, the use of structural types to implement type-checked duck typing. Scala example: // Declare a structural type for any class implementing close() type Closable = {def close(): Any} // Executes the provided function with the given // closable generator, creating a new instance which // will then be closed on completion. The provided // function's value will be returned. def withClosable[T, C <: Closable] (c: => C) (f: (C) => T) = { val closable = c try { f(closable) } finally { closable.close } } // Example usage def usage = { val updated = withClosable(db.openConnection) { conn => conn.update("INSERT INTO example VALUES (...") } System.out.println("Rows updated: " + updated) } This could be compared with Python's new 'with' syntax.
- namelessmike 17y agoC# 3: (1).UpTo(10).ForEach(x => Console.WriteLine(x)); Of course, "UpTo" requires first extending int, which is trivial: public static class IntExtensions { public static List<int> UpTo(this int start, int end) { var range = new List<int>(); for(int i = start; i < end; i++) { range.Add(i); } return range; } }
- _pius 17y agoThat's cool and all, but I think being able to do this natively in Ruby wins: p *1..10 Edit: you may need to do a "require 'pp'" first.
- mkramlich 17y agoin Python: for i in range(1,11): print i Python FTW? ;)
- henning 17y agoSince there's plenty of shitting on Scala going on, I'd like to point out that the Scala equivalent of that is: 1 to 10 foreach println Which seems more concise than the equivalent Ruby to me. Feh.