Понимание параметров модуля в OCaml - PullRequest
0 голосов
/ 25 апреля 2020

Я пытаюсь понять, в чем смысл этой connect функции:

let connect netif ethif arpv4 ipv4 icmpv4 udpv4 tcpv4 =
    let udpv4_listeners = Hashtbl.create 7 in
    let tcpv4_listeners = Hashtbl.create 7 in
    let t = { netif; ethif; arpv4; ipv4; icmpv4; tcpv4; udpv4;
              udpv4_listeners; tcpv4_listeners } in
    Log.info (fun f -> f "stack assembled: %a" pp t);
    Lwt.async (fun () -> listen t);
    Lwt.return t

Мое первое предположение: параметры netif ethif arpv4 ipv4 icmpv4 udpv4 tcpv4 по умолчанию считаются «переменными» то же имя, включенное в область определения функции connect?

Пожалуйста, посмотрите весь контекст здесь: https://github.com/mirage/mirage-tcpip/blob/master/src/stack-direct/tcpip_stack_direct.ml#L122

Если это не так, значит ли это, что мне нужно всегда передать все эти 7 параметров при вызове connect? Какой смысл их передавать, если они уже созданы здесь ?

...