Romɑn
хотя пару фич виндовых я бы забрал в макось
Vladislav
ааа
старый вроде один парень писал
Фил Ранжин
не всегда
Фил Ранжин
в последней ts будет
Romɑn
дислайк
Фил Ранжин
вскод херово подсвечивает F#
Фил Ранжин
кстати, вот всё хотел спросить
Фил Ранжин
там новое расширение для F# завезли
Фил Ранжин
как оно?
Фил Ранжин
которое через lang services
x
PM пусть делает что хочет )
Bonart
речь не о начальнике
К архитекторам это относится не меньше
Bonart
PM пусть делает что хочет )
PM вообще скорее обслуга чем начальство
Ayrat
как оно?
очень быстрое. Прям очень. Пока сырое
Roman
Хабр лежит походу
Vasily
Хммм... есть ощущение, что на работе таки внедрим Paket
Vasily
И это хорошо
Pavel
@omgszer а твои неперсистентные стримы гденить нарыть можно?
Ayrat
@omgszer а твои неперсистентные стримы гденить нарыть можно?
Да, можно. Надо бы конечно PR сделать чтобы их впендюрить в Hopac... Пока лень
Ayrat
ща скину
Ayrat
@deexpp добавляешь нугет сорс http://nuget.arkadium.com/nuget/ там нугет Inhabit.ETL.Common в нём AltStream живут в неймспейсе гопака, т.е. надо сделать open Hopac и можно жахать [1..10] |> AltStream.ofSeq |> AltStream.mapFun (fun x -> x*2) |> AltStream.consumeFun (printfn "%d")
Ayrat
сделать его персистентным можно через AltStream.memoize на любом этапе
Pavel
спасиб
Ayrat
Так, я наверное тупой. Почему это не компилируется?
Ayrat
тип такой дефинишн имеет type A = struct new : a:int -> A val mutable private a: int member A : int member A : int with set end
Ayrat
Ошибка такая error FS0256: A value must be mutable in order to mutate the contents or take the address of a value type, e.g. 'let mutable x = ...'
Ayrat
если чо, вот спека
Ayrat
страница 146
Ayrat
@vshapenko I summon you
Ayrat
и ещё, вот цитата с MSDN https://docs.microsoft.com/en-us/dotnet/fsharp/language-reference/members/properties#remarks `Properties can be members of classes, structures, discriminated unions, records, interfaces, and type extensions and can also be defined in object expressions.`
Ayrat
Я ссыкую ишью заводить, походу БАЙ ДЕЗАЙН, но я пока не понял в чём тут дизайн меня ебёт
Vasily
Стракт
Ayrat
Стракт
Не, я понимаю что он иммутабельный
Ayrat
Внимание вопрос - чо в спеке-то написано?
Ayrat
какие-то мутабельные поля в стракте
Ayrat
и оно даже компилится
Ayrat
в смысле само объявление типа с мутабельными полями в стракте
Vasily
Ну ща почитаем
Ayrat
Я кстати скомплил как в спеке написано
Ayrat
@vshapenko ^
Vasily
By design
Ayrat
Я тебе ещё круче покажу ща, охуеешь
Ayrat
Vasily
The fields in a struct may be mutable only if the struct does not have a primary constructor. For example:
Vasily
НННА
Ayrat
что ННА? у меня нет праймари конструктора
Ayrat
иначе он бы мне мозги выебал и не скомпилился
Ayrat
ты выше посмотри
Vasily
[<Struct>] type MutableComplex = val mutable real : float; val mutable imaginary : float member x.R = x.real member x.I = x.imaginary member x.Change(r, i) = x.real <- r; x.imaginary <- i new (r, i) = { real = r; imaginary = i }
Ayrat
все эти "мутабельные" поля нихуя немутабельные. Спека вводит в заблуждение
Vasily
В спеке так
Ayrat
ну один хер, там происходит создание нового объекта в x.Change(r,i)
Vasily
Нет
Ayrat
Да
Vasily
Да где?
Ayrat
хинт ушами. Это комилится member x.Change(r, i) = x.real <- r; x.imaginary <- i Это нет: member x.Change(r, i) = real <- r; imaginary <- i
Vasily
Логично
Ayrat
т.е. из "инстансного" метода нельзя обращаться к "инстасным" полям
Ayrat
x это уже новый объект
Vasily
Это не "инстансное " поле
Ayrat
member x.Change намекает что мы вызываем это у инстанса x
Vasily
В данном случае это скорее локальная переменная в конструкторе
Ayrat
да, это просто охуенно завуалированный конструктор
Ayrat
что-то типа { a with A = 1 }
Ayrat
которое одно поле меняет у исходной структуры и создаёт новый объект
Vasily
Возможно
Vasily
Но вернуть ты его не можешь
Vasily
Судя по всему
Ayrat
могу
Ayrat
Ayrat
вот, вернул же
Ayrat
и это другой объект
Vasily
Становится интересно, да
Ayrat
Становится интересно, да
да вообще пиздец какой-то