
Ayrat
16.07.2018
16:32:12
JS на каждом углу, в каждом браузере, т.е. это ПК, смартфоны, планшеты, весь блин Web на нём держится. куча транспайлеров из XXX в JS, топ-1 язык на StackOverflow, и это типа недостаточно круто чтобы обогнать эту отрыжку 2000-ых?
извините

Kirill
16.07.2018
16:38:03
Я и джаву в жизни не встречаю, однако она ещё выше

евроневидимка
16.07.2018
16:39:17

Google

евроневидимка
16.07.2018
16:39:50
Или это тоже пока эксклюзив для моно?

Friedrich
16.07.2018
16:54:13

евроневидимка
16.07.2018
16:54:26
а ведь могли бы, эх

Friedrich
16.07.2018
16:54:56
Не хотят помогать конкурирующим клиентским ОС, наверное.

[Anonymous]
16.07.2018
16:55:33
сейчас бы на формах сидеть)))
где вижуал бэйсик - как 1С

Friedrich
16.07.2018
16:57:09
На VB.NET я ни одного не видал.
Впрочем, я вообще ни одной программы на нём не видал, скажу честно :)
Кроме тех, что сам написал, пока баловался.

[Anonymous]
16.07.2018
16:57:52

Roman
16.07.2018
17:00:23
Привет

Google

Pepper
16.07.2018
17:00:56
Привет всем

Vladimir
16.07.2018
20:18:00

Roman
17.07.2018
09:49:00
Online version of the ts2fable
https://twitter.com/humhei1/status/1018779443370737664?s=19
http://fable.io/ts2fable

Ayrat
18.07.2018
09:04:45

Vasily
18.07.2018
09:07:15
Это как, простите?
Столько лет логин в твиттере не заводил,и сейчас не хочу

Ayrat
18.07.2018
09:07:54
ну у меня ссылки не открываются которые вчера открывались. Та что выше например

Dmitry
18.07.2018
09:08:15

Ayrat
18.07.2018
09:09:56
Лол, теперь пускает. Короче nvm

Pavel
18.07.2018
09:11:19

Ayrat
18.07.2018
09:12:05

Roman
18.07.2018
10:06:02
Ребят, у меня тут еэесперимент с semantic ui
может кто глянуть какой api удобнее?
https://github.com/Neftedollar/semantic-ui-react-fable-experiment

Владислав
18.07.2018
10:06:18
есть ли вариант как можно описать модуль без реализации. Понимаю что интерфейсы это не функционально, но смотреть на интерфейс и видеть все методы это удобно

Roman
18.07.2018
10:06:41
module MyModule =
let func: ('t -> unit)
и все?

Владислав
18.07.2018
10:07:56
а реализовывать как это?

Pavel
18.07.2018
10:08:03

Roman
18.07.2018
10:08:15
dotnet tool install fake-cli -g
clone https://github.com/Neftedollar/semantic-ui-react-fable-experiment.git
fake build --target run
использование api в Client

Pavel
18.07.2018
10:08:59
ну я в смысле какие API сравнивать по удобству?

Google

Ayrat
18.07.2018
10:09:22
да, я тоже не понял

Roman
18.07.2018
10:09:42
я сделал два типа api
objectApi и listApi в стиле Fulma
objectApi мне кажутся иногда удобнее
в проекте Client использованы оба

Pavel
18.07.2018
10:11:38
Ага, вижу

Roman
18.07.2018
10:11:39
objectApi
Button.content { Button.contentDft with
hidden = true } [
str "-1"
]
listApi
Button.button
[ Button.OnClick onClick
Button.IsNegative true ]
[
str "Click list api"
]

Владислав
18.07.2018
10:11:45
module MyModule =
let create: string -> obj
let update: string -> obj
module MyModuleImplementation =
let create name = /*implementation*/
let update name = /*implementation*/
как-то так можно сделать?

Roman
18.07.2018
10:12:16

Pavel
18.07.2018
10:19:11
т.к. использоваться же будет вместе со стандартным elmish dsl

Roman
18.07.2018
10:21:08
Ок, я его отдельно вынес в неймспейс, чтоб не засорять, но если оставить ObjectApi то думаю, что ничего плохого не будет, как кажется?
и кмк его можно даже в отдельный пакет вынести

Pavel
18.07.2018
10:24:50
А вообще лучше хорошо подумать и оставить какой-нибудь один вариант апи
зачем поддерживать оба?
сложно же

Roman
18.07.2018
10:28:05
objectApi более низкоуровнвый и без него делать не получится
так что мб придется просто скрыть, в обещм гляну потом как будет

Летучая
18.07.2018
10:35:16

Владислав
18.07.2018
10:56:50

Google

Roman
18.07.2018
11:02:30
Сайм советует использовать интерфейсы и objectExpressions
type IMyIntrfc =
sendMessage : m -> unit
let myIntrfc = { IMyIntrfc with sendMessage = realisation}

Pavel
18.07.2018
11:04:25

Roman
18.07.2018
11:04:56

Ayrat
18.07.2018
12:54:50
Реально крутая, я с её помощью столько моков написал, не счесть. Затрахался бы все эти типы рисовать. Вот пример для стандартного ILogger из Microsoft.Extensions.Logging:
let logger =
{ new ILogger with
member _x.Log(_, _, state, _, _) =
printfn "%A" state
member _x.IsEnabled _ = true
member _x.BeginScope _ =
{ new IDisposable with
member _x.Dispose() = () } }

Pavel
18.07.2018
13:12:57
а в джаве, кстати, есть такая фича :D

Vasily
18.07.2018
13:13:35
Там erased types, там все возможно

Igor
18.07.2018
13:15:39

Ayrat
18.07.2018
13:15:58
Ой ну ладно, ладно)
Это вообще не мок и не стаб. Это рабочий логгер созданный с помощью ObJExpr :)

Igor
18.07.2018
13:46:37
Кстати нашел минус в FSharpPlus.
Если юзать его операторы, то перестают выводиться типы ?
Придется как в хачкеле, везде явно писать типы.

Летучая
18.07.2018
13:48:53

Igor
18.07.2018
13:49:22
Потому что операторы типа "полиморфны", в отличие от явного использовать List.map Option.map (ну и плюс костыли, через которые это операторы работают в F#+)

Pavel
18.07.2018
13:55:44

Ayrat
18.07.2018
14:39:37

Vasily
18.07.2018
15:08:34
Читаю статью про зебру и думаю - вот куда гопака-то надо влепить

Vlad
18.07.2018
15:10:44

Vasily
18.07.2018
15:11:03
https://medium.com/@gerardtoconnor/racing-the-zebra-benchmark-performance-architecture-for-f-web-server-58dd922f5cfe
Ваще крутой чувак

Google

Vasily
18.07.2018
15:14:48
Сделал билдер с мутабельными членами

Igor
18.07.2018
16:21:04
А где можно посмотреть, что нового в FSharp.Core 4.5.0?

Sergey
18.07.2018
16:43:53

Roman
18.07.2018
16:53:19

Pavel
19.07.2018
06:11:41
если нужно изобразить хендл на результат _уже запщенного_ процесса, стоит использовать Task или можно как-то Async использовать?

Vasily
19.07.2018
06:18:24
А уже запущенный что возвращает?

Pavel
19.07.2018
06:24:58
значение DU
и есть ли какой-то аналог TaskCompletionSource на асинках?

Ayrat
19.07.2018
06:27:42
Сам Async и есть результат.

Pavel
19.07.2018
06:28:43
асинк надо стартовать, у меня же процесс начинается при вызове функции, или я не прав?

Ayrat
19.07.2018
06:28:44
Делать через Async.Start и внешний шаред мутабл ресурс это уаще не очень и что-то не так с кодом имхо
Где нужен результат, там делаем let! Или Runsyncronously

Pavel
19.07.2018
06:30:40
если подробнее описывать ситуацию, то происходит передача сообщения на другой узел, результат — появление ответного сообщения с данными (на которые я и хочу отдать хендл клиенту при вызове функции)
я примерно представляю как это сделать через TaskCompletionSource, но тогда это будет таск, а не асинк

Ayrat
19.07.2018
06:32:00
Ну так сделай async воркфлоу где будет получение запроса от клиента, отправка в сторонний сервис и потом отдача результата клиенту

Pavel
19.07.2018
06:33:18
всё общение между узлами построено на мейлбоксах, и request-response сообщениях
т.е. нет одного воркфлоу (и, похоже, в конкретно моём случае, не может быть)

Ayrat
19.07.2018
06:34:17
да ну нет конечно же, всё возможно
у тебя есть мейлбокс клиента
почему нельзя сделать в одном async блоке вызов стороннего сервиса и отправка результата в мейлбокс клиента
клиент при этом, если всё общение идёт через мейлбоксы, вообще не должен ждать ответа