trigonometricas sirve sintaxis residuo que polimorfismo para mayor matematicas igual funciones español basica haskell syntax identifier qualified-name

sirve - residuo en haskell



¿Cómo escribo el nombre calificado de un símbolo en Haskell? (2)

Tengo un conflicto de nombres entre dos módulos Haskell diferentes que quieren usar el mismo operador de infijo ( <*> ). El informe Haskell 98 dice que

modid.varsym

Está permitido, pero no puedo hacerlo funcionar. En su totalidad aquí están Test.hs :

module Test where import qualified Test2 as T three = T.<*>

y Test2.hs :

module Test2 where (<*>) = 3

Pero tratando de compilar los resultados en un mensaje de error:

Test.hs:6:12: parse error on input `T.<*>''

Intenté T.(<*>) pero eso tampoco funciona.

¿Cómo puedo hacer referencia a un nombre simbólico definido en un módulo importado por import qualified ?


Recuerda que importamos simbolos envueltos en parens. P.ej

import T ((<*>))

por lo que la importación cualificada es la misma:

import qualified T as Q main = print (Q.<*>)


tratar

three = (T.<*>)

Es extraño definir un operador infijo como un entero. Consideremos // (el operador de diferencia de conjunto):

import qualified Data.List as L foo = [1..5] L.// [1..3] -- evaluates to [4,5] diff = (L.//)

Como puede ver arriba, L.// es un operador de infijo calificado; y todavía funciona como un operador de infijo. Para usarlo como un valor, pones paréntesis alrededor de todo el asunto.