Re[10]: Очередной, весенний, взрыв пенесометрии :)
От: Mirrorer  
Дата: 27.03.08 13:15
Оценка: +1 :)
Здравствуйте, _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]: Очередной, весенний, взрыв пенесометрии :)
От: lomeo Россия http://lomeo.livejournal.com/
Дата: 27.03.08 13:18
Оценка:
Здравствуйте, 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]: Очередной, весенний, взрыв пенесометрии :)
От: palm mute  
Дата: 27.03.08 13:26
Оценка: -1
Здравствуйте, WolfHound, Вы писали:

WH>Ты же понимаешь что если написать все нужные комбинаторы то все точно также получится...

Без классов типов с полиморфизмом высшего порядка комбинаторов придется писать много.
Re[3]: Очередной, весенний, взрыв пенесометрии :)
От: Klapaucius  
Дата: 27.03.08 13:31
Оценка:
Здравствуйте, 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]: Очередной, весенний, взрыв пенесометрии :)
От: Don Reba Канада https://stackoverflow.com/users/49329/don-reba
Дата: 27.03.08 13:32
Оценка:
Красивый язык. Краткий и легко читается.
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]: Очередной, весенний, взрыв пенесометрии :)
От: Klapaucius  
Дата: 27.03.08 13:40
Оценка:
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]: Очередной, весенний, взрыв пенесометрии :)
От: BulatZiganshin  
Дата: 27.03.08 13:42
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>это композиция стрелок слева направо.

K>Это bind. Так то!

сепульки: размножаются в сепулькарии
сепулькарий: устройство для размножения сепулек
Люди, я люблю вас! Будьте бдительны!!!
Re[6]: Очередной, весенний, взрыв пенесометрии :)
От: Klapaucius  
Дата: 27.03.08 13:48
Оценка:
Здравствуйте, 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]: Очередной, весенний, взрыв пенесометрии :)
От: BulatZiganshin  
Дата: 27.03.08 13:51
Оценка:
Здравствуйте, Mirrorer, Вы писали:

M>Ой, а чегой-то стрелочки разные ?

M>И чем отличается >>= от >>> ?

>>= соединяет императивные процедуры, а >>> — чистые функции
Люди, я люблю вас! Будьте бдительны!!!
Re[3]: Очередной, весенний, взрыв пенесометрии :)
От: WolfHound  
Дата: 27.03.08 13:52
Оценка:
Здравствуйте, palm mute, Вы писали:

PM>Без классов типов с полиморфизмом высшего порядка комбинаторов придется писать много.

Практика показывает что не так уж и много.
... << RSDN@Home 1.2.0 alpha rev. 745>>
Пусть это будет просто:
просто, как только можно,
но не проще.
(C) А. Эйнштейн
Re[8]: Господа! не отвлекаемся от темы! :)
От: Klapaucius  
Дата: 27.03.08 13:54
Оценка: :))
Здравствуйте, _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]: Очередной, весенний, взрыв пенесометрии :)
От: BulatZiganshin  
Дата: 27.03.08 13:54
Оценка:
Здравствуйте, Klapaucius, Вы писали:

K>А если файл называется "Числа Васисуалия Пупкина.txt" и, к тому же, UTF-32?


в станд. библиотеке ни то, ни другое не поддерживается (хотя под linux'ом первое работать всё же будет). доп. библиотеки существуют, в частности поддержку unicode имён файлов под виндами я сам во freearc сделал
Люди, я люблю вас! Будьте бдительны!!!
Re[5]: Очередной, весенний, взрыв пенесометрии :)
От: palm mute  
Дата: 27.03.08 13:57
Оценка:
Здравствуйте, 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() )
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.