kb 24.07.2012 07:43

Ну вот не понимаю. Очередная статься, очередная логика: хаскель — функциональный язык => нельзя поменять значение переменной => результат функции зависит только от её параметров.

а что, блять, прочитать что-то из базы данных хаскель не умеет?

http://learnyouahaskell.com/input-and-ou...

Recommended by:

@lukish: неплохо

1. Minoru 24.07.2012 07:46 antaeus

Чтобы функция прочла что-то из БД, нужно этой самой функции передать либо готовое соединение, либо адреса-пароли-явки для самостоятельного коннекта. В последнем случае функция вернёт предписание (IO action), которое мы потом выполним и получим результат на основании данных из базы. Что не так?

2. kbMinoru /1 24.07.2012 07:53

у тебя в хаскеле есть функция foo(), которая читает значение из БД и возвращает его. можно ли утверждать, что при передачи определённых аргументов результат будет одним и тем же?

3. Minorukb /2 24.07.2012 07:55 antaeus

Нет, потому что функция имеет сайд-эффект (на что указывает IO в её типе).

4. kbMinoru /3 24.07.2012 08:49

Ну вот. И мой пост о том, что везде нужно приписывать "если не имеет сайд-эффектов" по 100 раз, чтоб люди понимали, что никакой серебряной пули не существует.

5. Minorukb /4 24.07.2012 09:01 antaeus

Понятно. Неясно только, при чём здесь серебрянная пуля, но я думаю, что ты просто плохо сформулировал мысль.

6. kbMinoru /5 24.07.2012 09:16

Ну, возможно. Короче говоря меня возмущают подобные цитаты:

> The only thing a function can do in Haskell is give us back some result based on the parameters we gave it. If a function is called two times with the same parameters, it has to return the same result.

Я считаю, что это некорректно, это запутывает. Даже в том же SICP, который нынче читаю, допустили подобный "огрех".

7. Elemir 24.07.2012 09:22 BitlBee

Ты идиот или троль?

8. Elemirkb /2 24.07.2012 09:28 BitlBee

В хаскеле не может быть таких функций. Типичная функция «getValue :: IO Int» возвращающает не значение поле, а лишь «ссылку» на состояние этого поля. Соответственно вся программа на haskell, — описание того, как нужно изменить текущее состояние реального мира

9. kbElemir /7 24.07.2012 09:28

Не понял.

10. lukishkb /9 24.07.2012 09:29 BitlBee

Дебил

11. Elemirkb /6 24.07.2012 09:29 BitlBee

И чего тут неправильного?

12. kbElemir /8 24.07.2012 09:32

В хаскеле не может быть функций, печатающих на экран значение ячейки в базе данных?

13. kblukish /10 24.07.2012 09:32

Иди нахуй.

14. lukishkb /13 24.07.2012 09:32 BitlBee

:[

15. kbElemir /11 24.07.2012 09:33

То, что второе не следует из первого?

16. Elemirkb /12 24.07.2012 09:34 BitlBee

Нет, конечно. В хаскеле могут быть лишь функции, которые описывают как это сделать.

17. Elemirkb /15 24.07.2012 09:34 BitlBee

Следует, у тебя с элементарной логикой проблемы?

18. kbElemir /16 24.07.2012 09:41

Но речь-то идёт не о сравнении описания или ссылок, а о сравнении значения по этой самой ссылке. Иначе, описание, по сути, и является самим текстом программы, просто в каком-то другом представлении.

19. Elemirkb /18 24.07.2012 09:44 BitlBee

Хаскель не работает с реальным миром. Хаскель-функция описывает что нужно сделать, чтобы сравнить значения по ссылке, но не сравнивает их. Это ДЕКЛАРАТИВНЫЙ язык программирования

20. kbElemir /19 24.07.2012 09:47

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

А преимущество "чистых" функций состоит именно в возможности давать утверждение об одинаковости значений, возвращаемых функциями, и вообще не зависят от языка. Так вот, в этой логической цепочке неточность именно в том, что отсутствие сайд-эффектов является обязательным условием. Конечно, возможно автор нарочно это делает, т.к. дальше он рассказал об этой проблеме, но я считаю это неправильном.

21. Elemirkb /20 24.07.2012 09:52 BitlBee

Если ты так не рассуждаешь, то ты попросту идиот. Именно адекватный взгляд на RealWorld породил такую превосходную концепцию как линейные типы

22. 238328 24.07.2012 16:17

ГОСПОДИ, ХАСКЕЛЛЬ ДАЖЕ НЕ МОЖЕТ РАЗБИТЬ СТРОКУ ПО ПОДСТРОКЕ, ЕСЛИ ТЫ НЕ НАПИШЕШЬ СВОЙ ПАРСЕР

23. lukish238328 /22 24.07.2012 18:08 BitlBee

data.list.split ?

Do you really want to delete ?