Михаил Л. aka dx3mod
44 subscribers
85 photos
11 videos
10 files
238 links
my tiny tech blog
Download Telegram
ООО

LWT 6

ЖДЕМ-С
🔥2
Ух! OCaml Platforms все хорошеет и хорошеет 🐫
🔥3
OCaml tips. Работа с байтовыми данными на OCaml

https://ocamlportal.ru/recipes/working-with-bytes.html

Смотреть на ВК видео.
Смотреть на Ютабе.

#ocaml #video #ocamltips #ocamlportal
2🔥1
Внес несколько изменений на ocamlportal.ru: добавил рецепт про ведения пакетa в OPAM, актулизировал инфу про lwt 6, добавил ссылки на коммуните на главную страницу
🔥3
Там Раст вроде как вышел...
🤯1
Короче, на Окамле можно писать гуй под МакОсь 🚬
🔥52
К слову, от меня снова начали отписываться.... По моему это заговор против моей евангелисткой деятельности за Окамл в массы 👀
😭4😢1
Добавлена в OPAM библиотека — intel_hex.0.2

Ну там ничего существенного, один фикс и добавлена в доку инфа про выдаваемые исключения

#share
Милорд, ваши подписчики покидают вас...
😭3
Выпуск Lwt.6.1.0

Крохотный минорный релиз с исправлениями по дата рейсу, установки под виндой и остальным вещам. В ppx расширении теперь нормально указываются аннотаци типов let%lwt x : t = … in …
Михаил Л. aka dx3mod
Милорд, ваши подписчики покидают вас...
Что самое интересное, уменьшение происходит и из-за того, что некоторые придурки улетают в черный список, за свой бред в адрес того, что я делаю
😁1😭1
Вау, рубисты обновили главную страницу
https://www.ruby-lang.org/en/
Выглядит шикарно
🔥1
Abstract IO pattern

Хотел бы поговорить про IO, как вы знаете, я написал уже достаточно библиотек на Окамле и всегда, когда приходиться с вводом-выводом сталкиваешься с этим, а именно с тем, что пользователь захочет использовать твою библиотеку в разных средах с разными библиотеками (самый классический пример, он использует Lwt для асинхрощены и ему не прикольно, что твое блокирующие решение станет узким горлом — он хотел бы использовать твою библиотеку в контексте lwt нативно с соответствующей поддержкой асинка, а другой захочется использовать в ее в простом синхронном контексте, а другой вообще обработанный Джейн Стрит использует ее в рамках Async либы.

Неужели придется писать библиотеку для разных библиотек, то есть одно и тоже по сотню раз? Конечно, нет. Тут не долго думая, вы сами придете к мысли, что требуется абстрагирование и тут самым подходящим будет использовать module type. Образцовый пример это библиотека Cohttp.

module type IO = sig
type 'a t
and out_channel

val ( let* ) : 'a t -> ('a -> 'b t) -> 'b t
val return : 'a -> 'a t
val stdout : out_channel
val print_endline : out_channel -> string -> unit t
end

module Sync_impl = struct
type 'a t = 'a
and out_channel = Stdlib.out_channel

let stdout = Stdlib.stdout
let ( let* ) x f = f x
let return x = x

let print_endline oc s =
let* _ = Out_channel.output_string oc s in
Out_channel.output_string oc "\n"
end

module Make (IO : IO) = struct
open IO

let print_hello_and_bye () =
let* _ = print_endline stdout "hello" in
print_endline stdout "bye"
end

module Lib = Make (Sync_impl)

let () = Lib.print_hello_and_bye ()
2