
Илья
23.05.2017
06:54:06
учу ФП потихоньку

Klei
23.05.2017
06:54:21
так все-таки как бы вы оптимизировали приведенный выше код?
Не касаясь вопросов осмысленности, приблизительный эквивалент:
open System.Text.RegularExpressions
let search pattern input =
pattern
|> Option.bind (fun pattern -> input |> Option.map (fun input -> Regex.Match(input, pattern)))
|> Option.filter (fun p -> p.Success)
let removeUrlParams url =
let remove str =
str
|> Seq.tryFindIndexBack ((=) '?')
|> Option.map (fun index -> str |> Seq.take index |> Array.ofSeq |> System.String)
url |> Option.bind remove

Илья
23.05.2017
06:54:24
в одночасье в него не въедешь

Google

Evgeniy
23.05.2017
06:55:14
@DarkByte2016 Вон, посмотри код @Kleidemos. И обрати внимание на функцию bind.
Это одна из тех вещей, которая делает монаду монадой.

Roman
23.05.2017
06:55:49
в одночасье в него не въедешь
Да легко, главное нагуглить статьи почему IEnumerable это монада, а SelectMany это bind и на знакомых типах можно разобраться

Илья
23.05.2017
06:56:22

Igor
23.05.2017
07:05:45
ну поэтому я и хочу узнать))
Имхо всех кто хочет понять монады, надо заставлять учить хаскель (по урокам Bartosz), а может еще по теор. катег. прогнать.

Evgeniy
23.05.2017
07:06:08
Но зачем?
Что в них такого, для чего нужен хаскель и теория категорий?

Илья
23.05.2017
07:08:34
мне дотнет ближе, поэтому я решил начать с фишарпа

Igor
23.05.2017
07:08:45
Но зачем?
Иначе они сути то не поймут и лучше они вообще не будут употреблять “слов которые не понимают”.
Да и там не только pure/bind (fmap), там еще законы есть, которые нельзя выразить на системе типов.

Evgeniy
23.05.2017
07:11:52
Я не претендую на какое-то глубокое понимание монад.
Но я просто пролистал статью на википедии.
Evan Czaplicki вон вообще в докладе рассказывает, что вместо "монад" лучше всем говорить про "коллбеки". Ну, то есть, нет здесь никакого рокетсаенса.
Если вы не занимаетесь этим как математик или computer scientist.

Google

Pawel
23.05.2017
07:16:57

Anton
23.05.2017
07:18:40
Любой чатик по фп преваращется в разговор о монадах. ))

Evgeniy
23.05.2017
07:18:58
Краеугольный камень!

Igor
23.05.2017
07:19:02

Pawel
23.05.2017
07:19:16

Anton
23.05.2017
07:19:31

Илья
23.05.2017
07:21:09

Igor
23.05.2017
07:22:04

Akhmed
23.05.2017
07:23:39
Бессмысленно кого то заставлять учить F# монады и все такое
Максимально эффективно разработчики могут усвоить что то только тогда когда они на практических примерах увидят преимущества
вот как объяснить преимущества SOLID ? джуны не знают солид и когда объясняешь его преимущества видят только то что код сильно усложняется

Илья
23.05.2017
07:25:10

Daniel
23.05.2017
07:25:19

Anton
23.05.2017
07:29:45
Монады полезны когда ты понимаешь их силу. Мне кажется что изучать лучше всего монады начав с моноидов и потом поняв переход от моноида к монаде. Самый простой способ понять переход это описать int как генерик класс type IntG<'a> = IntG of int * 'a описать bint и return и потом подставить туда unit и выразить mzero mappend. И начинать надо со свободных моноидов и монад. Но это имхо.

Илья
23.05.2017
07:31:52
моноиды?

Evgeniy
23.05.2017
08:29:08
@Worldbeater А спорим, как обычно, об образовательных моментах. Как учить, как объяснять. Иногда это бывает полезно.

Admin
ERROR: S client not available

Evgeniy
23.05.2017
08:33:18
По умолчанию мы рады любым вопросам, и всем путникам, включая новичков, если они адекватно себя ведут. :)

Илья
23.05.2017
08:36:15

Google

Evgeniy
23.05.2017
08:37:40
@DarkByte2016 Это оффтоп.

Илья
23.05.2017
08:42:03
чет я никак не пойму что делает эта функция bind?

Evgeniy
23.05.2017
08:51:52
@angmarr @fvnever @neftedollar Vasily ^
Что думаете по этому поводу?

Friedrich
23.05.2017
08:54:24
Так что вот этот чат и есть для новичков. Здесь любые вопросы, связанные с F#, я предлагаю приветствовать.

Most
23.05.2017
08:55:28
»> я предлагаю приветствовать.
отправлять в гугл считается приветствием?)

Friedrich
23.05.2017
08:55:28

Му
23.05.2017
08:57:54
:)))

Летучая
23.05.2017
08:58:26
Скорее гугол!

Igor
23.05.2017
09:01:06
Тут в Kotlin чате с ~500 хотели сделать для новичком, но большинство оказалось против и решили подождать хотя бы до 1k.
Может и нам подождать, пока народ наберется))

Pawel
23.05.2017
09:02:11
Да при чём гугол? вопрос нормальный для своего уровня занний и описание Option.bind вообще никакого ответа на него не даёт. Чтобы на него ответить, нужно опять таки про монады рассказать, но у нас тут действительно слегка другая тема, большинству это не интересно (мне например)

Илья
23.05.2017
09:02:49
чет ваще никак... я еще понял что мап делает, но вот бинд это что-то уже за гранью...

Roman
23.05.2017
09:03:14
Будут ли в чате для новичков не новички сидеть и кто тогда будет объяснять новичкам если там только новички будут.

Pawel
23.05.2017
09:03:38
ну я бы объяснил

Vasily
23.05.2017
09:04:42
https://fsharpforfunandprofit.com/posts/computation-expressions-bind/