
Ayrat
20.07.2018
13:15:22
понял

Vasily
20.07.2018
13:15:37
С меню там повеселее, конечно
Короче
На самом деле

Google

Vasily
20.07.2018
13:19:18
Змейка
Это сложная структура
Состоящая из следующих параметров
1. Координаты головы
2. Последовательность сегментов с направлением
Тогда она на такте каждом прекрасно фолдится

Ayrat
20.07.2018
13:21:27
ща, в начале надо настроить актор систему :D

Vasily
20.07.2018
13:21:37
Хуячь так

Dmitry
20.07.2018
13:24:48
кажется, разобрался - дело было не в кабине
хотя нет - слева всё равно импорты неймспейсов/модулей красные

Vasily
20.07.2018
13:44:42
Чет Ayrat затих :)

Ayrat
20.07.2018
13:45:01
кодирую)

Google

Roman
20.07.2018
15:45:05

Vasily
20.07.2018
15:48:17
Лучше два

Roman
20.07.2018
15:50:36
Следующую статью от @Kleidemos зарядили в Майкрософт.
Ждём когда опубликуют
Участники сообщества могут прочитать сейчас если интересно :)

Ayrat
20.07.2018
15:54:32
С нетерпением жду комментариев

Igor
20.07.2018
18:01:11
Кто-нибудь слышал, а если планы разрешить вызывать методы C# классов через
<ClassName>.<MethodName> <instance> <args1> <args2> ...
Это бы сильно помогло тайп-инференсу при интеропе (ну и более функционально)
Типа String.ToUpper "hello"

Vasiliy
20.07.2018
18:03:24


Igor
20.07.2018
18:06:13
За тем что если сейчас сделать
let foo a = a.ToUpper ()
то это не скомпилируется (пока явно тип не укажишь)
А так можно было бы написать
let foo a = String.ToUpper a
или
let foo = String.ToUpper
ну и там композить их как обычные функции, передавать их как параметр и тп
В Java/Kotlin (вроде даже в C#) есть method-reference, думаю здесь тоже можно было бы их использовать.
Вот пример вызова (здесь и дальше Kotlin)
fun <T> foo(f: (T) -> Int, x: T) = f(x)
fun main(args: Array<String>) {
// простой вызов метода из лямбды
foo({ x -> x.length }, "")
// method-reference, ВМЕСТО лямбды
foo(String::length, "")
}
Вот ее можно даже сохранить в переменную (даже при том, что это метод экземпляра класса)
val f: (String) -> Int = String::length

Evgeniy
20.07.2018
18:19:12

Vasiliy
20.07.2018
18:19:15

Roman
20.07.2018
18:44:14
ПРИВЕТ!

Friedrich
20.07.2018
18:44:45

Roman
20.07.2018
18:45:13
а кто на опыте может книгу на русском посоветовать по F# для человека который имеет опыт программирования на c# (ну всмысле не для прям новичков)?

Roman
20.07.2018
18:47:19

Evgeniy
20.07.2018
18:47:48
Uniform function call syntax наоборот. :)

Летучая
20.07.2018
18:55:17

Roman
20.07.2018
18:56:11
О как раз, я c# разраб, спасибо

Google

евроневидимка
20.07.2018
18:58:26
лол, уже удалился

Roman
20.07.2018
22:36:48
Привет!!

Evgeniy
21.07.2018
07:17:37
Привет из ирцы. :)

Марина
21.07.2018
07:40:51

Sergey
21.07.2018
08:48:33
Свежая пресса https://sergeytihon.com/2018/07/21/f-weekly-29-2018-magic-of-saturn-code-prediction-with-nn-and-happy-birthday-to-sforkmann-and-trikace/

Roman
21.07.2018
08:53:01

Vlad
21.07.2018
09:05:08
https://sharplab.io/#v2:DYLgZgzgNALiCGEC2AfA2gHgMowE4FcBjGAPgF0BYAKBgE8AHAUwAIBhAe3wDs9bmBeas2HMUzAKpcA1l3YB3LkJFiAglwAm7XLnhLhYyQEsYjdSp0AjAKJJDOkxD2jmKsAHMAFvC6GIMb06qPIZu+PBq6gBC8LgW+Oq6VCLOaqGGwMCJyarAFt6GWcouuEiMPoX6zAByjDAejLiZGhBqMOnAjI5JRansmYHFbmVtXBUppbiGhN5Y8EjsY6r4fpOLLst48MAFA+b4ebtN6gCSEEdd2S4AXg15hgBWAd2VkewQ5REAEg03buwAboZRgNorF4JoLkVolw3Jl1J0PCDGMA3IZ8EgQfhcFIgfAAGKIdiYlExHbPZzRDw6IGYggaQxInyKcliWZAmCgurIxhIWhIkrxNaROmMQwAERiywgWzmIL6hkBQp0V3SIPgXiQiBBHnw/mZl1e+H+tVORzlMAgcm8QuRkshL2RhhuA1Y1oSLvYhDepu86ntzg4MKJLLYwx0wFck2mXAASox6PttoQPUHhfArld4ICMowBlg5MYbo1fQNjv8tLQOIgYB72FIfc0XR50rmQ66Jux2Pqiqxm8C2312EgLGTLp8u24ANIToA
Забавно

Roman
21.07.2018
09:11:19

アレクセイ
21.07.2018
10:01:07
Странно. В других группах такого не видел.

Evgeniy
21.07.2018
10:29:29

Летучая
21.07.2018
14:41:47

Igor
21.07.2018
14:44:52
Хм, слышал что его закрыли

Ivan
21.07.2018
15:18:15
Коллеги, смотрите какой юз кейс. Пусть у меня есть DU type A = | B of int | C of string. И некая функция:
let (f : 'a - Option<'b>) (a:'a) - можно ли как то передать туда без оверхиада, что этот f = math x with | B i - Some i | _ -> None ? Что типа f (B _)

Vasily
21.07.2018
16:09:40
Option.bind не подойдёт?
Ещё можно op_explicit сделать для типа

Ivan
21.07.2018
16:14:20
Вась, идея сделать из DU CASE сделать функцию 'du -> option 'v - то есть как то вытащить то, что делает компилер при матче. С минимальным оверхиадом

Vasily
21.07.2018
16:27:04
Ну напиши op_ explicit руками
Или заюзай либу с типами
Тцапалиса

Google

Vasily
21.07.2018
16:27:44
Не помню, как называется, к сожалению

Roman
21.07.2018
17:23:47
Typeshape?

Vasily
21.07.2018
17:29:16
Угу

Friedrich
21.07.2018
20:20:28

Vasily
21.07.2018
20:25:58
Хммм ...походу, у DU есть ограничение на количество веток

Ayrat
21.07.2018
20:27:28

Ivan
21.07.2018
20:52:20
Typeshape?
Плохо объяснил. Попробую по другому. Active pattern имеет сигнатуру 't -> Option<'t1> , можно ли получить из записи паттерна функцию. (| Eror e -> ) в фукцию (fun a -> match a with |Error e -> Some e | _ -> None)

Vasily
21.07.2018
20:55:21
Ничо не понял

Ivan
21.07.2018
20:58:02
Любой деструктурирующий паттерн - это функция с сигнатурой 't -> Option<'d> - это ведь так?

Vasily
21.07.2018
20:59:12
Мне кажется, не совсем
Можно в шарплабе глянуть, во что развернется

Ivan
21.07.2018
21:00:01
Судя по active pattern - именно так.

Klei
21.07.2018
21:00:52

Ivan
21.07.2018
21:02:17
Вот и хотелось бы из паттерна матча с кейзом DU получить соотсетствующую функцию
В общем то я понял что нельзя. Но хотелось бы. Что то типа:
type DU = | A of int | B of string
let exec f b v = match f v with | Some x -> b x |> Some | _ -> None
И вызов:
exec |A| (-) (A 2)
результат
Some(-2)

Klei
21.07.2018
21:11:40

Ivan
21.07.2018
21:14:24
Это не считается ?
Хотелось бы прямого синтаксиса,, превращющего паттерн в фунцию

Vasily
21.07.2018
21:17:23
Напиши пропозал
Мол, хочу набор функций из актив паттерна

Google

Ivan
21.07.2018
21:22:26
Актив паттерн и так функция ?. Я из любого паттерна функцию хочу :-)

Vasily
21.07.2018
21:23:10
Пропозал, ну или сам в компилятор запили

Klei
22.07.2018
05:45:07
Quotations можно как-нибудь в строковый код преобразовать?

Evgeniy
22.07.2018
05:49:13

Klei
22.07.2018
05:50:29
Ну наконструровал я на Expr какое-нибудь выражение, сказал ему toCode myExpr и он выдал мне нечто вроде "let q = 42".

Evgeniy
22.07.2018
05:51:00
Нет, это нетривиально.