openlang

Клиентские значения, требующие мономорфности

Я только осваиваю Eliom и получаю The types of client values must be monomorphic from its usage or from its type annotation. Вот пример, который у меня сейчас есть:

  let%server new_entry_form =
  let open Html.D in
  let field = Raw.input ~a:[a_input_type `Text] () in
  let submit = Raw.button ~a:[a_class ["button"]] [txt "add"] in
  ignore
  [%client
  let open Html.D in
  let open Js_of_ocaml_lwt.Lwt_js_events in
  let field = Html.To_dom.of_input ~%field in
  (Lwt.async @@ fun() ->
  clicks (Html.To_dom.of_element ~%submit)
  (fun _ _ ->
  let entered = field##value |> Js_of_ocaml.Js.to_string in
  add_entry {id="5";name=entered;description=""};
  Lwt.return_unit):unit
  )];

  div [
  field;submit
  ]

Предполагаю, что дело в ~%field и ~%submit. Почему возникает ошибка, если код так похож на примеры из учебника? Что я делаю неправильно?

Переведено с английскогоПоказать оригинал

Разговор продолжается 2

Следуя доводам
  1. Ссылка на ответ

    Проблему решает аннотация типа клиентского значения:

      let _ : unit Lwt.t Eliom_client_value.t = [%client ...] in

    Затем обращайтесь к атрибуту value, а не к несуществующему методу:

      let entered = field##.value |> Js_of_ocaml.Js.to_string in

    Надеюсь, пригодится!

    Переведено с английскогоПоказать оригинал

Другие стороны того же вопроса

  1. Как унаследовать класс внутри другого класса?

    Здравствуйте, В пакете, код которого я не могу менять, есть такая иерархия классов: Я хочу добавить удобную обёртку вокруг In…

    Ответы 1Последняя активность scala
  2. Сравнение привязок have и let в Lean4

    Я заметил, что эти два выражения и ведут себя одинаково. То же происходит при доказательстве теорем. Они взаимозаменяемы? В ч…

    Ответы 3Последняя активность lean-4
  3. Инициализация TypeScript Map со значениями в виде массивов строк

    Создаю Map, в котором каждая запись содержит массив строк. Как одновременно задать его тип и инициализировать одним выражение…

    Ответы 2Последняя активность typescript