Someone just told me that implementing an interface in F# is less vebose than in Ceylon. Let's see if that's true. Pick an example given on MSDN. (Yes, I know it's silly to make such trivial comparisons.)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ceylon.language.serialization { | |
serialization, | |
Deconstructor | |
} | |
import ceylon.language.meta.model { | |
ClassModel, | |
Type | |
} | |
import ceylon.language.meta.declaration { | |
ValueDeclaration, |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import ceylon.locale { | |
systemLocale | |
} | |
import ceylon.time { | |
today, | |
date | |
} | |
import ceylon.time.base { | |
monthOf | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"Parse a properties file." | |
void parsePropertiesFile(String textContent, | |
void handleEntry(String key, String text)) { | |
value lines = textContent.lines.iterator(); | |
while (!is Finished rawline = lines.next()) { | |
value builder = StringBuilder(); | |
builder.append(rawline); | |
variable value lastline = rawline; | |
while (lastline.endsWith("\\"), //line continuation | |
!is Finished nextline = lines.next()) { |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shared void balancedBrackets() { | |
value nextRandom = random(); | |
for (length in 1..10) { | |
value text = generate(nextRandom, length); | |
print("``text.padTrailing(20)`` - ``if (balanced(text)) then "OK" else "NOT OK"``"); | |
} | |
} | |
Boolean balanced(String input) | |
=> !input |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shared void run() { | |
for (perm in permutations("ABCD").indexed) { | |
print(perm); | |
} | |
} | |
shared {Element[]*} permutations<Element> | |
(List<Element> list) | |
=> object satisfies {Element[]*} { | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shared String formatFloat( | |
"The floating point value to format." | |
Float float, | |
"The minimum number of allowed decimal places. | |
If `minDecimalPlaces<=0`, the result may have no | |
decimal point." | |
Integer minDecimalPlaces=1, | |
"The maximum number of allowed decimal places. | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
"Finds the (last) longest substring that contains | |
at most two unique characters" | |
String longest2UniqueCharSubstring(String s) | |
=> let (init = [[0, 0, 0, 0], 0, '\0', '\0'], | |
mpos = s.fold(init)((acc,ch) | |
=> let ([[mb,me,cb,ce],cb1,ch0,ch1] = acc, | |
ce1 = ce+1, | |
max = (Integer b, Integer e) | |
=> me-mb > e-b then [mb,me,b,e] | |
else [b,e,b,e]) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Gavins-New-MacBook-Pro:ceylon-dist gavin$ ant -Dbuild-against=last-release clean-ide eclipse | |
Buildfile: /Users/gavin/ceylon-dist/build.xml | |
clean-ide: | |
siblings: | |
clean: | |
clean-item: |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
shared void run() => printAll { for (i in 0..50) fizzbuzz(i) }; | |
String fizzbuzz(Integer i) | |
=> (i%15==0 then "fizzbuzz") | |
else (i%3==0 then "fizz") | |
else (i%5==0 then "buzz") | |
else i.string; | |
void printAll({String*} strings) => print(", ".join(strings)); |
OlderNewer