Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 20, 2017 10:59:21

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

> А когда оно в модулях, язык чистым остаётся.

Ты наверное не в курсе но в Haskell-е есть модули. Более того тот же sum находится в модуле Prelude который подгружается автоматически.

> В питоне функция sum полиморфная, а в Haskell'е - нет, но при этом в сам язык зашита.

До тебя может быть не дошло, но в предыдущем своём сообщении я продемонстрировал полиморфизм этой функции.

> Давай матрицы сложи. … На Haskell'е должно легко реализовываться, по-твоему (модуля нет?).

Успокойся. Есть там такой модуль http://hackage.haskell.org/package/matrix-0.3.5.0/docs/Data-Matrix.html



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#2 Апрель 20, 2017 11:34:58

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Rodegast
я продемонстрировал полиморфизм этой функции.
Так ты в консоли продемонстрируй, а то стал файл создавать. В питоне вот ничего создавать не надо. Прямо в консоли (в REPL'е) сделай такую sum.

Rodegast
Ты наверное не в курсе но в Haskell-е есть модули. Более того тот же sum находится в модуле Prelude который подгружается автоматически.
Ну, и почему ты не подгрузил уже готовую sum для строк? Почему тебе пришлось новый код какой-то писать? Да она вообще должна их складывать сразу в соответствии с легендой об удобстве Haskell'а! А для матриц тоже писать будешь?

Видишь, пока были числа, sum работала, а как только условия немного изменились, ты бросился писать код. Я же ничего не писал, просто подгрузил готовое. В реальной жизни от того, что у тебя есть, а что тебе надо написать, зависит вообще разработка проекта - как скорость, так и мотивация. Поэтому и на питоне легче делать программу, чем на C. Пока на C будешь писать один вспомогательный модуль, на питоне уже будет готова вся программа.

А вот ты можешь матрицы из модуля загнать в список на Haskell сходу?



Отредактировано py.user.next (Апрель 20, 2017 11:39:01)

Офлайн

#3 Апрель 20, 2017 11:46:24

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

В реальной жизни никто sum для конкатенации списков не использует. Для этого есть обычная свёртка:

 Prelude> foldr1 (++) ["abc", "def"]
"abcdef"



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#4 Апрель 20, 2017 12:04:46

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Rodegast
В реальной жизни никто sum для конкатенации списков не использует. Для этого есть обычная свёртка:
Там не свёртка есть, а concat. Просто речь именно о применимости sum без лишних телодвижений, как в питоне сделано. Строки ты не сложишь, но переопределить магический метод можно у любого объекта, получая эффект от sum.

  
>>> class A:
...     def __init__(self, n):
...         self.n = n
...     def __add__(self, v):
...         return '{} plus {!s}'.format(self.n, v)
...     def __radd__(self, v):
...         return '{!s} plus {}'.format(v, self.n)
...     def __str__(self):
...         return str(self.n)
... 
>>> A('x') + A('y') + A('z')
'x plus y plus z'
>>> 
>>> sum([A('y'), A('z')], A('x'))
'x plus y plus z'
>>>



Офлайн

#5 Апрель 20, 2017 12:11:47

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

> Там не свёртка есть, а concat.

Я обычно свёрткой пользуюсь ибо она более универсальна.

> Просто речь именно о применимости sum без лишних телодвижений, как в питоне сделано.

Вот. А теперь сравни всё это с тем что я на haskell-е написал.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#6 Апрель 20, 2017 12:32:31

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Rodegast
А теперь сравни всё это с тем что я на haskell-е написал.
Вот я и жду, когда же ты сделаешь
sum [matrix1, matrix2]



Офлайн

#7 Апрель 20, 2017 12:37:21

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Зачем ждать? Ссылку на документацию по матричному модулю я тебе дал, как объяснить sum-у что с матрицами делать тоже написано. Я надеюсь что ты дальше без моей помощи сможешь справиться.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#8 Апрель 21, 2017 11:34:54

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9897
Репутация: +  855  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Rodegast
Я надеюсь что ты дальше без моей помощи сможешь справиться.
Был бы он удобный, ты бы уже набросал. Вот оно удобство. В Erlang'е просто берёшь и пользуешься и умеет он то, что уметь как бы не должен изначально, по идее. А в Haskell'е вроде всё красиво и должно работать, а нужно всё равно что-то доделывать, дописывать. И списки тут только из однотипных элементов должны быть (хотя почему?).



Офлайн

#9 Апрель 21, 2017 11:43:35

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

> Был бы он удобный, ты бы уже набросал….доделывать, дописывать

Вот только демагогии не надо

> И списки тут только из однотипных элементов должны быть (хотя почему?).

Потому что статическая типизация. Если нужны разные типы то пользуются картежами.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Онлайн

#10 Апрель 21, 2017 15:36:52

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2763
Репутация: +  185  -
Профиль   Отправить e-mail  

Задача на сумму факториалов

Кстати вот ещё один модуль для работы с матрицами http://dis.um.es/~alberto/hmatrix/hmatrix.html там сделано всё как ты хочешь:

 Prelude> import Numeric.LinearAlgebra
Prelude Numeric.LinearAlgebra> let a = (2><2)  [ 2, 2, 2, 2 ]
Prelude Numeric.LinearAlgebra> let b = (2><2)  [ 3, 3, 3, 3 ]
Prelude Numeric.LinearAlgebra> sum [a,b]
(2><2)
 [ 5.0, 5.0
 , 5.0, 5.0 ]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Апрель 21, 2017 16:17:09)

Онлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version