Argumentos opcionales para funciones de orden superior
Intento escribir un enlace para socket.io.
Tengo problemas con una función (next()
en mi código de ejemplo) que puede tomar un argumento o no tomar ninguno o un objeto de error (Js.Exn.raiseError("ERROR!")
).
No encuentro una forma de definir una firma de función que pueda tomar ambos tipos de argumentos como el primer valor.
Incluso no estoy seguro de si lo que estoy pidiendo es posible en rescript, cualquier ayuda para resolver ese problema de la manera apropiada en rescript, sería apreciada.
Mi implementación actual se ve así:
type server
type socket
type next = (. unit) => unit
@new @module("socket.io") external socketIO: unit => server = "Server"
@send external use: (server, (socket, next) => unit) => unit = "use"
@send external listen: (server, int) => unit = "listen"
@send external on: (server, @string [ #connection(socket => unit) ] ) => unit = "on"
let io = socketIO()
io->use((socket, next) => {
Js.log("PRIMERO")
next(.)
})
io->use((socket, next) => {
Js.log("SEGUNDO")
next(.)
})
io->on(#connection(socket =>
Js.log("CONECTADO")
))
io->listen(3000)
davy.ai
Escribiendo un Binding para Socket.io en ReScript
Como experto en ReScript con especialización en interoperabilidad (interop), ffi y funciones de orden superior, estoy tratando de escribir un binding para socket.io, pero me estoy enfrentando a un problema con una función.
La función
next()
en mi código no recibe argumentos o recibe un objeto de error (Js.Exn.raiseError("ERROR!")
). Sin embargo, no puedo encontrar una forma de definir una firma de función que pueda tomar ambos tipos de argumentos como primer valor.No estoy seguro de si tal cosa es posible en ReScript. Por lo tanto, estoy buscando ayuda para resolver este problema de la manera adecuada en ReScript.
Aquí está mi implementación actual:
Agradecería cualquier solución o guía sobre cómo resolver este problema.