dmz>>если я, конечно, правильно понял, что тут происходит. Но Nemerle в таком примере не впечатлил, да.
BZ>нет, здесь печатается сумма чисел в каждой строке. ваш ход:
Пардон тогда:
[reduce(lambda a,b:int(a)+int(b), x.split(' ')) for x in open('nums').readlines()]
dmz>>>если я, конечно, правильно понял, что тут происходит. Но Nemerle в таком примере не впечатлил, да.
BZ>>нет, здесь печатается сумма чисел в каждой строке. ваш ход:
dmz>Пардон тогда:
dmz>
dmz>[reduce(lambda a,b:int(a)+int(b), x.split(' ')) for x in open('nums').readlines()]
dmz>
Можно и так.
using Nemerle.Utility;
using System.IO;
using System;
module TextReadeExtension
{
public ReadLines(this reader : TextReader) : list[string]
{
mutable lines = [];
mutable line = reader.ReadLine();
while (null != line)
{
lines ::= line;
line = reader.ReadLine();
}
lines;
}
}
File
.OpenText("test.txt")
.ReadLines()
.Map(x => x.Split(array[' ']).Fold(0, (a, b) => int.Parse(a) + b))
.Iter(Console.WriteLine : int -> void);
BulatZiganshin wrote:
> import Control.Arrow > main = interact (lines >>> map sumline >>> unlines) > sumline = words >>> map (read::String->Int) >>> sum >>> show
Вот они страхи... Может это у меня опыта нет, но из всех приведённых программ, если не считать K (или что там у Mirrorer), эта самая непонятная.
Что такое interact? lines? unlines? words? а особенно >>>?
Posted via RSDN NNTP Server 2.1 beta
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Здравствуйте, ., Вы писали:
>> import Control.Arrow >> main = interact (lines >>> map sumline >>> unlines) >> sumline = words >>> map (read::String->Int) >>> sum >>> show .>Вот они страхи... Может это у меня опыта нет, но из всех приведённых программ, если не считать K (или что там у Mirrorer), эта самая непонятная. .>Что такое interact? lines? unlines? words? а особенно >>>?
interact f читает стандартный входной поток, применяет к нему функцию f, пишет в стандартный выходной поток.
lines — разбивает текст по символу '\n'
words — разбивает строку по пробелам >>> — конвейер (шеллом пользоваться приходилось?).
Здравствуйте, BulatZiganshin, Вы писали:
BZ>недёшево "человеческое лицо" обходится, одним словом
Ты же понимаешь что если написать все нужные комбинаторы то все точно также получится...
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Здравствуйте, BulatZiganshin, Вы писали:
BZ>just for comparison :
BZ>import Control.Arrow BZ>main = interact (lines >>> map sumline >>> unlines) BZ>sumline = words >>> map (read::String->Int) >>> sum >>> show
BZ>недёшево "человеческое лицо" обходится, одним словом
Это не эквивалентный код. Интересно, как на Хаскеле будет выглядеть открытие и закрытие файла? Также, интересно как в нём обработать некорректный формат.
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, Константин, Вы писали:
DM>>>Ha Ruby, как обычно, короче всего: К>>Думаю, на perl'е ещё короче, но это уже звериный оскал
M>Ноги, крылья, главное хвост !!! M>
Здравствуйте, Don Reba, Вы писали:
DR>Это не эквивалентный код. Интересно, как на Хаскеле будет выглядеть открытие и закрытие файла? Также, интересно как в нём обработать некорректный формат.
import Control.Arrow
import Control.Exception
main = handle print $ do
readFile "test" >>= return.process >>= putStr
process = lines >>> map sumline >>> unlines
sumline = words >>> map (read::String->Int) >>> sum >>> show