Ilya
После обычных методов остаётся добавить статические. Хотя бы последовательно.
Mikhαil
Архитектор с моей предыдущей работы говорил что экстеншны не нужны
Mikhαil
Говорит - без них жил
Roman
Mikhαil
(ну архитектор это громкое слово, он себя сам так нарек)
Igor
Ilya
А вот тайпклассы не совсем.
Roman
Ilya
В чём-то он был, я про это. Штука для синтаксиса поприятнее.
Roman
тайпклассы никакой неявности не добавляют, если что
Igor
смотря как реализовать, нормально с coherence или еб_нуто на имлиситах, как в скала)
Roman
имплиситы это имплиситы. Название, какбэ, намекает) Я говорю за тайпклассы
Roman
То, что в скале что-то там сделано через жопу, не значит, что везде должно быть через жопу
Igor
а по другому и не сделаешь поверх ооп-vm (как .net или jvm)
TOV_MULTIMASSO
TOV_MULTIMASSO
Eta, frege?
Roman
Roman
вот блять откуда?
TOV_MULTIMASSO
В этих двух языках вполне себе тайпклассы для jvm
TOV_MULTIMASSO
Если чо, тайпклассы резолвятся статически
Roman
да при чем тут одерски?
Roman
Что, если у одерски что-то не получилось, это в принципе невозможно?
TOV_MULTIMASSO
А в скале было принято решение оставить совместимость с объектной моделью жавы
TOV_MULTIMASSO
Да я бы в жаву и через ffi тыкал бы только, если бы этот ffi был с трёхметровой ручкой
TOV_MULTIMASSO
Это печально, да
TOV_MULTIMASSO
Костылей?
Igor
Короче, ребят, C# переживет любой кол-во фич) и тайп классы туда тоже влезут.
И очевидно, что Мэдс сможет "красиво" воткнуть тайп-классы в язык с 20-летним легаси и VM (и несомненно будет лучше чем в скала).
Правда, хрен его знает, на кой ляд вам моноиды в продакшене сдались, но я в чужие дела не лезу, нужны значит есть зачем... 😉
Ilya
А не переживёт, так и хрен с ним.
Doge
Основная претензия к имплиситам - это именно отсутствие когерентности и всё т.п.
Igor
Конечно сделаешь, если будешь дизайнить язык с 0 и контролировать компляцию до асембелера
Doge
Doge
dictionary passing, все дела
TOV_MULTIMASSO
Для бля, в frege сделали же. Тот факт, что язык умер не указывает на невозможность нормальной реализации.
Igor
Как язык с ffi может считаться нормальными? (и забудим, про то что не было 20 лет легаси)
TOV_MULTIMASSO
Что тебе не нравится в ffi? Оно там только потому, что систему типов жавы надо за километр обходить
Vasiliy
TOV_MULTIMASSO
И в жаве тоже есть своё ffi, в виде native-методов
Igor
Ох_енный план, давайте сделаем D# с ffi в C#, НО с тайплкассами и блекджком
Igor
Roman
Doge
Есть пример на яблоках?
С тем же show:
class Show a where
show :: a -> String
instance Show Int where
show = undefined
instance (Show a) => [a] where
show xs = "[" ++ intercalate "," (map show xs) ++ "]"
И таким образом у нас автоматически есть инстанс Show для списка элементов тех типов, у которых есть инстанс Show
Ilya
Это точно яблоки?
Ilya
Хотя ладно. Я понял, наверное.
Vladislav
@omgszer надо тебе пиво купить будет за помощь со стрелочками
Vladislav
@Liminiens
open Hopac
open Hopac.Infixes
open System
let src = Stream.Src.create<int>()
let stream = Stream.Src.tap src
let rnd = Random()
let producerJob i = job {
let ms = rnd.Next(100,2000)
do! timeOutMillis ms
do! Stream.Src.value src i
return i+1
}
stream
|> Stream.consumeFun (printfn "stream - %A")
Job.iterateServer 0 producerJob
|> start
stream
|> Stream.groupByFun (fun _ ack group -> ack, group) (fun _ -> 0)
|> Stream.mapJob (fun (ack, group) ->
timeOutMillis 1000
>>=. ack
>>=. Stream.toSeq group)
|> Stream.iterFun (printfn "%A")
|> run
аутпут
stream - 0
stream - 1
seq [0; 1]
stream - 2
stream - 3
seq [2; 3]
stream - 4
stream - 5
stream - 6
seq [4; 5; 6]
stream - 7
stream - 8
seq [7; 8]
stream - 9
stream - 10
stream - 11
seq [9; 10; 11]
stream - 12
stream - 13
seq [12; 13]
stream - 14
stream - 15
stream - 16
stream - 17
seq [14; 15; 16; 17]
Igor
Хотя ладно. Я понял, наверное.
Можно просто один раз пройти https://stepik.org/course/75/syllabus
и тогда будешь понимать и про яблок и груши
Так сказать - подготовиться к C# 10
Mikhαil
Mikhαil
Или подписка
Igor
БЕС - ПЛАТ - НО
Mikhαil
Igor
Там еще есть вторая часть https://stepik.org/course/693/syllabus
но она очень сложная
Vladimir
Vladimir
верно я говорю?)
Ayrat
теперь System.IO.Stream у нас IEnumerable и вот как это выглядит ...
Ayrat
и теперь по стриму можно делать Select Where ToList
Ayrat
КОСМОС
Vladimir
👍
Ayrat
если бы торгерсен дал такой пример, щас бы весь пронет гудел
Ayrat
но нет, сука. Моноид на интах
Ayrat
сука. моноид.
Vladimir
так понимаю что самому такое не захочется писать, должны либы с тайпклассами появляться
Ayrat
Ayrat
но ты можешь объявить в одной сборке доменные модели, а потом по мере надобности докидывать к ним разные интерфейсы из других сборок
Vladimir
Roman
Roman
тяжело придумать юзкейс(
вот у нас сегодня именно такой юзкейс был. Есть модели в доменной сборке, но к ним надо докинуть интерфейс один, чтобы запихать в код, который работает с эластиком. В результате сделали 2 набора идентичных моделей и маппинг к ним