he encontrado este pedazo de código en el paquete Haskell sendfile
:¿Qué significa '#type' en Haskell Foreign Function Interface?
-- sendfile64 gives LFS support
foreign import ccall unsafe "sendfile64" c_sendfile
:: Fd -> Fd -> Ptr (#type off64_t) -> (#type size_t) -> IO (#type ssize_t)
1) lo que hace #type
media y 2) ¿por qué recibo este error,
[1 of 1] Compiling Linux.Splice (splice.hs, splice.o)
splice.hs:40:12: parse error on input `type'
cuando yo mismo trato de usarlo de la siguiente manera ?:
ghc --make splice.hs
splice.hs:
{-# LANGUAGE ForeignFunctionInterface #-}
module Linux.Splice where
import Data.Word
import System.Posix.Types
-- SPLICE
-- fcntl.h
-- ssize_t splice(
-- int fd_in,
-- loff_t* off_in,
-- int fd_out,
-- loff_t* off_out,
-- size_t len,
-- unsigned int flags
--);
foreign import ccall unsafe "fnctl.h splice" c_splice
:: Fd
-> Ptr (#type {- < parse error -} loff_t)
-> Fd
-> Ptr (#type loff_t)
-> (#type size_t)
-> Word
-> IO (#type ssize_t)
(utilizando 7.4.x GHC)
http://www.haskell.org/ghc/docs/latest/html/users_guide/hsc2hs.html – sdcvvc
Debo señalar que esta importación extranjera debe ** no ** marcarse como "insegura". Cuando una función foránea marca bloques 'inseguros', puede evitar que otros subprocesos se ejecuten (en un programa compilado con GHC con '-threaded'). –
@JoeyAdams ¡Muchas gracias por señalar eso! Estoy trabajando en una implementación pulida de empalme de zócalos de red para mi servidor proxy. Lo cual espero usar en Linux en lugar de loops de lectura/escritura que todavía seguiría usando en otros sistemas operativos por el momento. –