Re[10]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, _pk_sly, Вы писали:
__>(reduce и add) описаны отдельно
Ну это же неспортивно. Отдельно можно описать make_sum_of_numbers_in_every_line_in_file и получить гарантированно самый короткий результат.
Re[3]: Очередной, весенний, взрыв пенесометрии :)
От:
Mirrorer
Дата: 27.03.08 13:18
Оценка:
Здравствуйте, BulatZiganshin, Вы писали:
BZ>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
Ой, а чегой-то стрелочки разные ?
И чем отличается >>= от >>> ?
Re[2]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, Don Reba, Вы писали:
DR>Это не эквивалентный код. Интересно, как на Хаскеле будет выглядеть открытие и закрытие файла?
file <- openFile "somefile.txt" ReadMode
doSomethingWith file
hClose file
DR>Также, интересно как в нём обработать некорректный формат.
import Prelude hiding (catch)
import Control.Exception (catch, ErrorCall)
> print (read "notnumber" + 5) `catch` (\(ErrorCall s) -> print s)
http://www.haskell.org/ghc/docs/latest/html/libraries/base/Control-Exception.html ... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Re[2]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, WolfHound, Вы писали:
WH>Ты же понимаешь что если написать все нужные комбинаторы то все точно также получится...
Без классов типов с полиморфизмом высшего порядка комбинаторов придется писать много.
Re[3]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, BulatZiganshin, Вы писали:
BZ>BZ>import Control.Arrow
BZ>import Control.Exception
BZ>main = handle print $ do
BZ> readFile "test" >>= return.process >>= putStr
BZ>process = lines >>> map sumline >>> unlines
BZ>sumline = words >>> map (read::String->Int) >>> sum >>> show
BZ>
А если файл называется "Числа Васисуалия Пупкина.txt" и, к тому же, UTF-32?
... << RSDN@Home 1.2.0 alpha 4 rev. 992>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[3]: Очередной, весенний, взрыв пенесометрии :)
Красивый язык. Краткий и легко читается.
Ce n'est que pour vous dire ce que je vous dis.
Re[11]: Очередной, весенний, взрыв пенесометрии :)
От:
_pk_sly
Дата: 27.03.08 13:33
Оценка:
Здравствуйте, Mirrorer, Вы писали:
M>Здравствуйте, _pk_sly, Вы писали:
__>>(reduce и add) описаны отдельно
M>Ну это же неспортивно. Отдельно можно описать make_sum_of_numbers_in_every_line_in_file и получить гарантированно самый короткий результат.
да, согласен
я же не виноват что разработчики Перла функцию map в язык включили, а reduce — забыли.. для приведения языка к функциональному стандарту, дописанный reduce из пяти строк можно не считать
по поводу add — та же история
операторы — не first class functions.
насчёт J — втыкаю
в это !..
Re[7]: Господа! не отвлекаемся от темы! :)
От:
_pk_sly
Дата: 27.03.08 13:39
Оценка:
которая называется "несложный ФЯ с человеческим лицом"
Re[4]: Очередной, весенний, взрыв пенесометрии :)
M>И чем отличается >>= от >>> ?
(>>>) :: Arrow a => a b c -> a c d -> a b d
это композиция стрелок слева направо.
А
(>>=) :: Monad a => a b -> (b -> a c) -> a c
Это bind. Так то!
... << RSDN@Home 1.2.0 alpha 4 rev. 992>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[5]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, Klapaucius, Вы писали:
K>это композиция стрелок слева направо.
K>Это bind. Так то!
сепульки: размножаются в сепулькарии
сепулькарий: устройство для размножения сепулек
Люди, я люблю вас! Будьте бдительны!!!
Re[6]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, BulatZiganshin, Вы писали:
BZ>сепульки: размножаются в сепулькарии
BZ>сепулькарий: устройство для размножения сепулек
Точно! А сепуление — это занятие ардритов (см.) с планеты Энтеропия (см.).
Вот только слово "размножаются" — все портит. Все сразу ясно становится.
... << RSDN@Home 1.2.0 alpha 4 rev. 992>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, Mirrorer, Вы писали:
M>Ой, а чегой-то стрелочки разные ?
M>И чем отличается >>= от >>> ?
>>= соединяет императивные процедуры, а >>> — чистые функции
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, palm mute, Вы писали:
PM>Без классов типов с полиморфизмом высшего порядка комбинаторов придется писать много.
Практика показывает что не так уж и много.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Господа! не отвлекаемся от темы! :)
Здравствуйте, _pk_sly, Вы писали:
__>которая называется "несложный ФЯ с человеческим лицом"
Несложный ФЯ с человеческим лицом Клейсли.
... << RSDN@Home 1.2.0 alpha 4 rev. 992>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[4]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, Klapaucius, Вы писали:
K>А если файл называется "Числа Васисуалия Пупкина.txt" и, к тому же, UTF-32?
в станд. библиотеке ни то, ни другое не поддерживается (хотя под linux'ом первое работать всё же будет). доп. библиотеки существуют, в частности поддержку unicode имён файлов под виндами я сам во freearc сделал
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Очередной, весенний, взрыв пенесометрии :)
Здравствуйте, BulatZiganshin, Вы писали:
M>>И чем отличается >>= от >>> ?
>>= соединяет императивные процедуры, а >>> — чистые функции
вот уж упростил так упростил!
Re[4]: Очередной, весенний, взрыв пенесометрии :)
От:
Lloyd
Дата: 27.03.08 14:09
Оценка:
Здравствуйте, dmz, Вы писали:
dmz>dmz>[reduce(lambda a,b:int(a)+int(b), x.split(' ' )) for x in open('nums' ).readlines()]
dmz>
До кучи:
C#:
File.ReadAllLines("Numbers.txt" ).Select(l => l.Split(' ' ).Select(s => int .Parse(s)).Sum()).ToArray();... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[5]: Очередной, весенний, взрыв пенесометрии :)
От:
_pk_sly
Дата: 27.03.08 14:10
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Здравствуйте, dmz, Вы писали:
dmz>>dmz>>[reduce(lambda a,b:int(a)+int(b), x.split(' ' )) for x in open('nums' ).readlines()]
dmz>>
L>До кучи:
L>C#:
L>L>File.ReadAllLines("Numbers.txt" ).Select(l => l.Split(' ' ).Select(s => int .Parse(s)).Sum()).ToArray();
L>
а напечатать?
Re[6]: Очередной, весенний, взрыв пенесометрии :)
От:
Lloyd
Дата: 27.03.08 14:15
Оценка:
Здравствуйте, _pk_sly, Вы писали:
__>а напечатать?
Array.ForEach(File.ReadAllLines("Numbers.txt" ).Select(l => l.Split(' ' ).Select(s => int .Parse(s)).Sum()).ToArray(), Console.WriteLine);... << RSDN@Home 1.2.0 alpha rev. 786>>
Re[6]: Очередной, весенний, взрыв пенесометрии :)
От:
dmz
Дата: 27.03.08 14:57
Оценка:
__>а напечатать?
print "\n" .join( sum(x.split(' ' )) for x in open('nums' ).readlines() )
Пока на собственное сообщение не было ответов, его можно удалить.
Удалить