@Fsharp_chat

Страница 179 из 772
Pavel
30.05.2017
13:41:05
Roman
30.05.2017
15:10:48
крутотенюшка

Nikolay
30.05.2017
15:14:20
Сколько стоит? :)

Летучая
30.05.2017
15:15:04
200р за все полотно

Google
Летучая
30.05.2017
15:15:45


Nikolay
30.05.2017
15:16:24
Я бы хотел рельефную :3

И почему не сделал белый вариант?)

Летучая
30.05.2017
15:20:13
Черный по идее более официальный (такие цвета на фшарпдоторг). Ну и + у него белая обводка есть.

Igor
30.05.2017
15:24:51
Покажи наклеенный. Какой размер?

Летучая
30.05.2017
15:45:29


Igor
30.05.2017
15:46:08
Что за размер? Ты вырезал или они были вырезаны?

Интересно, как они будут на светящемся яблоке смотреться

Летучая
30.05.2017
15:46:48
Что за размер? Ты вырезал или они были вырезаны?
Плоттерная резка, настраиваемый размер (выбрали 7*7см)

Axm
30.05.2017
15:49:34
И сколько обходится такой лист?

Evgeniy
30.05.2017
16:00:18
200р за все полотно

Friedrich
30.05.2017
16:56:40
@fvnever Рекомендую к вечернему прочтению. https://blogs.msdn.microsoft.com/mulambda/2010/05/01/finer-points-of-f-value-restriction/
Спасибо за статью, очень полезная. Добавлю в список переводов :)

Aminion
30.05.2017
17:44:28
Поясните за инверсию контроля в фп, я так понимаю, так же просто, как в ООП, разруливать зависимости не возможно?

Google
Vagif
30.05.2017
17:47:19
@neftedollar у нас Akkling в планах стоит. Там гораздо лучше F# API реализован, чем в нынешней Akka.NET, плюс всякие добавки для кластера, streams и т.п. В июле планируем переписать основной наш код под Akkling.

Igor
30.05.2017
17:49:55
Vasily
30.05.2017
17:51:59
Ну в целом , учитывая каррирование,di действительно выглядит костылем

Igor
30.05.2017
17:58:05
Ну в целом , учитывая каррирование,di действительно выглядит костылем
Ну Марк считает, что DI через каррирование не функционально (он это объясняет на 16 минуте). Таки я сейчас стараюсь просто разделять pure и инфраструктурный код.

Roman
30.05.2017
19:16:00
@neftedollar у нас Akkling в планах стоит. Там гораздо лучше F# API реализован, чем в нынешней Akka.NET, плюс всякие добавки для кластера, streams и т.п. В июле планируем переписать основной наш код под Akkling.
Как раз с этим вопрос: там товарищ менять API собрался, но не понятно как это отразится на старом коде. И про кластер сразу вопрос: пока не было dotnetty по сети акка.нет работала отвратительно. Не мерили как сейчас?

Vagif
30.05.2017
19:21:00
Нет, не мерил сейчас. А на коде акклинг отразится сильно, многое надо будет переписать, но это к лучшему :-)

Nikolay
30.05.2017
19:23:16
if msg.Text.IsSome then Some(msg) else None

Как это записать функциональнее? :)

Roman
30.05.2017
19:28:44
Nikolay
30.05.2017
19:28:58
Так ок?

Roman
30.05.2017
19:29:30
if msg.Text.IsSome then Some(msg) else None
Прост не понятно зачем тебе msg option у которого и Text option

Artemy
30.05.2017
19:30:02
if msg.Text.IsSome then Some(msg) else None
msg.Text |> Option.map (fun _ -> msg)

Nikolay
30.05.2017
19:30:22
Да я тут немного накосячил :3

Не помню как эти штуки называются, которые в паттерн матчинге используются

Roman
30.05.2017
19:31:18
Используй match он приятнее будет) match msg.Text with | Some _ -> Some msg | _ -> None

Nikolay
30.05.2017
19:32:20
Я в общем делаю обработку сообщений от бота :)

Artemy
30.05.2017
19:32:22
Ой, это я точку упустил

Roman
30.05.2017
19:32:38
Ой, это я точку упустил
Тогда твой вариант лучше

Google
Artemy
30.05.2017
19:34:46
Ура! ?

Roman
30.05.2017
19:54:18
Такой посыл : В максимум восьми словах нужно описать призыв к писать на f#, что -то вроде манифеста. У Scala(если не ошибаюсь это они придумали) было "пиши меньше - делай больше"

Летучая
30.05.2017
19:58:09
write less do more эт жс

жквери

Roman
30.05.2017
20:02:48
write less do more эт жс
Значит better java. Что тоже подчеркивает очень много

У меня пока родилось что-то вроде Write it once

Хотя я не уверен, что правильно написал.

"Пиши один раз. Правильно" на русском какой-то такой посыл.

Летучая
30.05.2017
20:04:41
Пиши без х*%?и.



Serge
30.05.2017
20:09:34
Functional for Fun. F#.

Ну, или "F#" на первое место ?

или: Fun for Function. Functional for Fun.

(слишком "американско", но как вариант...)

Igor
30.05.2017
20:11:46
Хороший слоган для C# 8.0 (с и их рекордами и тд).

Roman
30.05.2017
20:12:23
Functional for Fun. F#.
Нет призыва, и f# хоть и фп но не только

Serge
30.05.2017
20:13:07
Гм... Призыв — это императив, вообще-то ?

Летучая
30.05.2017
20:37:49
for Fun and Productive

Nikolay
30.05.2017
20:50:35
https://github.com/Dolfik1/Funogram/blob/master/Funogram.TestBot/Router.fs

Уродливо, да?

Google
Летучая
30.05.2017
20:57:00
if text = "/commands" then             Some("")         else None match text with | "/commands" -> Some("") | _ -> None

Матч имхо нагляднее и понятнее ифов

Nikolay
30.05.2017
20:57:54
А это не используется уже)

Надо выпилить

Летучая
30.05.2017
20:58:45
Еще такой момент

Telegram.SendMessage везде императивно дергаешь с таплом. Мб применить каррирование и ввести частичные функции? (или как они называются)

Nikolay
30.05.2017
21:00:09
А к таплу же нельзя каррирование применить?

Летучая
30.05.2017
21:00:53
Да, но можно сделать идиоматик-обертку. В коде выше очень часто используется такая конструкция: processError <| Telegram.SendMessage(token, ChatId.ChatIdLong(msg.Chat.Id), "Test <b>HTML</b>", ParseMode.HTML) Почему бы не сделать функцию: let sendMessage token chatId text parseMode = (token, chatId, text, parseMode) |> Telegram.SendMessage |> processError И дополнительную функцию, чтобы избежать копипасты: let sendChatMessage token msg text parseMode = sendMessage token ChatId.ChatIdLong(msg.Chat.Id) text parseMode Есть ещё вариант сделать жирную обёртку для функции Telegram.SendMessage со всеми аргументами, а потом разбить это всё с помощью каррирования на несколько более простых функций и дёргать их. Вот кстати вместо дефолтных параметров C# можно юзать дефолтно-параметризированные функции c:

@Dolfik

Aleksander
30.05.2017
21:17:14
let csSendMessage (token, chatId, text, parseMode) = printf "%A" (token, chatId, text, parseMode) let sendMessage token chatId text parseMode = csSendMessage (token, chatId, text, parseMode) let token = "token" let chatId = "chatId" let sendMessage'' text parseMode = sendMessage token chatId text parseMode sendMessage'' "hello" "plain"

как-то так, например?

Aleksander
30.05.2017
21:20:43
'' - да, просто имя. обозначил так функцию с двумя закаррироваными аргументами

и, если уж придираться, то главных недостатка пока вижу два - сложно расширять. надо прописывать новую команду в три разных места - тема разбора параметров команды не раскрыта ?

это если подходить к этому коду как к референсной имплементации

Friedrich
31.05.2017
04:03:59
https://github.com/Dolfik1/Funogram/blob/master/Funogram.TestBot/Router.fs
А чо такое send_message1 .. send_message7?

Evgeniy
31.05.2017
05:21:00
Может быть будет полезно. Недавно читал статью про то, как в Haskell сделать расширяемые команды. https://two-wrongs.com/dynamic-dispatch-in-haskell-how-to-make-code-extendable

Страница 179 из 772