Если кто еще не знал,
PLEAC — Programming Language Examples Alike Cookbook
Добавляйте туда Nemerle и D
![](/Forum/Images/beer.gif)
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>
Здравствуйте, Mamut, Вы писали:
M>Если кто еще не знал, PLEAC — Programming Language Examples Alike Cookbook
M>Добавляйте туда Nemerle и D
![](/Forum/Images/beer.gif)
Да там даже C# нет,
а на Java реализовано 16.86% примеров,
а на C++ всего 3.43% !
Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
M>>Если кто еще не знал, PLEAC — Programming Language Examples Alike Cookbook
M>>Добавляйте туда Nemerle и D
АХ>Да там даже C# нет,
АХ>а на Java реализовано 16.86% примеров,
АХ>а на C++ всего 3.43% !
АХ>Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).
Примерно так и есть, но мы ж не боимся трудностей
![](/Forum/Images/smile.gif)
От чего, от чего, от чего тах хорошо?
Потому что кто-то любит программиста
<< RSDN@Home 1.2.0 alpha rev. 647>>
Здравствуйте, Mamut, Вы писали:
M>Если кто еще не знал, PLEAC — Programming Language Examples Alike Cookbook
M>Добавляйте туда Nemerle и D
![](/Forum/Images/beer.gif)
Я думаю не стоит овчинка выделки. Первоисточник всех примеров Perl Cookbook. Не тот это язык, чтобы с него примеры брать.
Большая часть примеров выльется не в сравнение языков, а сравнение стандартных библиотек. Если на Nemerle скорее всего можно все эти примеры переписать используя стандартные библиотеки MS .NET Framework, то для D часто придется использовать сторонние библиотеки(которых кстати довольно мало).
Как сравнение языков даже
99 Bottles of Beer и то лучше. Правда там уже есть и Nemerle, и D. Но Nemerle там представлен мягко говоря далеко не самым красивым кодом. Я сегодня от нечего делать написал и засабмитил пару вариантов программы. Если совсем честно, то не написал, а в основном украл из вариантов для Haskell и D.
Самый краткий вариант(используется питонообразный синтаксис):
#pragma indent
using System
def capitalize = s => Char.ToUpper(s[0]).ToString() + s.Substring(1)
def beers(n)
| 0 => "no more bottles of beer"
| 1 => "1 more bottle of beer"
| _ => $"$n bottles of beer"
def onTheWall = n => $"$(beers(n)) on the wall, $(beers(n)).\n"
def passAround(n)
| 0 => $"Go to the store and buy some more, $(beers(99)) on the wall.\n"
| _ => $"Take one down and pass it around, $(beers(n-1)) on the wall.\n"
$[99, 98 .. 0].Iter(n => Console.WriteLine(capitalize(onTheWall(n)) + passAround(n)))
Вариант с использованием foreach, обычного синтаксиса и extention methods:
using System;
module StringExt {
public Capitalize(this s : string) : string {
Char.ToUpper(s[0]).ToString() + s.Substring(1)
}
}
def beers(n) {
| 0 => "no more bottles of beer"
| 1 => "1 more bottle of beer"
| _ => $"$n bottles of beer"
}
def onTheWall = n => $"$(beers(n)) on the wall, $(beers(n)).\n";
def passAround(n) {
| 0 => $"Go to the store and buy some more, $(beers(99)) on the wall.\n"
| _ => $"Take one down and pass it around, $(beers(n-1)) on the wall.\n"
}
foreach(n in [99, 98 .. 0])
Console.WriteLine(onTheWall(n).Capitalize() + passAround(n))
В качестве оправдания практически ненужной в предыдущих примерах функции capitalize вариант с преобразованием чисел в числительные.
def numeral(n)
{
assert(n <= 99);
def tens = array["twenty","thirty","fourty","fifty","sixty","seventy","eighty","ninety"];
def nums = array["no more", "one", "two", "three", "four", "five", "six",
"seven", "eight", "nine", "ten", "eleven", "twelve"];
def teens = array["thir", "four", "fif", "six", "seven", "eigh", "nine"];
if (n < 13)
nums[n]
else if (n < 20)
teens[n - 13] + "teen"
else
tens[(n / 10) - 2] + (if ((n % 10) == 0) "" else " " + nums[n % 10])
}
// остальной код поскипан, в этом варианте меняется только функция beers
def beers(n)
{
| 0 => "no more bottles of beer"
| 1 => "one more bottle of beer"
| _ => $"$(numeral(n)) bottles of beer"
}
Здравствуйте, Андрей Хропов, Вы писали:
АХ>Похоже что сайт скрипт-ориентирован (ибо Perl/Python/Ruby там 100/85/60 % соответственно).
Дык примеры то ли писались на одном из скриптов, или подбирались од оные.
Но на Немерле там можно в большинстве случаев сделать не хуже чем на Руби. Так что можно просто изучать исходники Руби.
![](/Forum/Images/biggrin.gif)
... << RSDN@Home 1.2.0 alpha rev. 637>>
Здравствуйте, Vermicious Knid, Вы писали:
VK>Большая часть примеров выльется не в сравнение языков, а сравнение стандартных библиотек.
В принципе это полезно для изучающих язык.
VK> Если на Nemerle скорее всего можно все эти примеры переписать используя стандартные библиотеки MS .NET Framework, то для D часто придется использовать сторонние библиотеки(которых кстати довольно мало).
Дык сразу выявляется недостаток языка — остуствие удобных и обширных библиотек.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Здравствуйте, anonymous, Вы писали:
A>Все примеры взяты из Perl Cookbook.
Что и следовало ожидать. Они подчеркнуто скрптовые.
В прочем если будет время попробую их реализовать. Причем не ради пенисометрии (хотя это тоже забавно), а просто потому, что это неплохой обучающий материал.
... << RSDN@Home 1.2.0 alpha rev. 637>>