2011-12-22 23 views
17

"Ugh", podrías pensar ... "Otra pregunta de sintaxis, aquí déjame googleear eso para ti novato". ¡Pero Ay! Lo busqué en Google, ¡y todavía estoy perplejo!

encontrados en el código del blog yesod

import System.IO 
import Data.Enumerator 
import Data.Enumerator.Binary 

main = 
    withFile "output.txt" WriteMode $ \output -> 
    run_ $ enumFile "input.txt" $$ iterHandle output 

Sin embargo el operador "$$" es nuevo para mí. El informe de Haskell 2010 solo lo menciona una vez como símbolo de operador. ¿Qué hace?

+3

Aquí en stackoverflow, animamos a las preguntas noob, siempre y cuando se pone esfuerzo en hacer lo que es clara su pregunta y también poner esfuerzo moderado en google para la respuesta y evitar duplicados. Su pregunta es clara, única y relevante, así que ¡deje de preocuparse y pregunte! –

+3

Gracias Dan! Normalmente mis preguntas se sienten más complejas que un simple operador, así que estaba un poco nervioso por haberme perdido algo, RTFM y todo. – Toymakerii

+1

Puede haberlo buscado en Google, pero ¿lo has buscado? – AJFarmar

Respuesta

20

En Haskell, los operadores como $$ no son parte de la sintaxis, son funciones definibles por el usuario. Por lo tanto, debe buscar API documenation para Yesod para ver qué es $$. En particular, la función $$ de su ejemplo está documentada en here.

+2

Tenga en cuenta que el enumerador no es una biblioteca de Yesod, por lo que mirar la documentación de Yesod no ayudaría en esta instancia :) Felizmente, al conectar 'Data.Enumerator' en Hoogle produce el paquete correcto, aunque no aparece como resultado de '($$)' ... – ehird

+1

Otra opción es [hayoo] (http://holumbus.fh-wedel.de/hayoo/hayoo.html). Curiosamente, eso encuentra resultados para "($$", pero ni para "$$" ni para "($$)". –

+0

Hoogle funciona bien para este –

6

Hay Hoogle, que es bastante bueno, pero desafortunadamente no conoce muchos paquetes.

Hayoo sabe mucho más, pero su interfaz parece peculiar, y no parece ofrecer una herramienta de línea de comandos como lo hace hoogle.

Si tiene una idea de qué paquete está tratando, puede ir directamente a su documentación, por ejemplo. docs of the enumerator package, con la lista de módulos en la parte inferior. Además, estos documentos siempre tienen un index, y le permiten ver el código fuente a través de los enlaces fuente.

Como último recurso, use cabal unpack enumerator y grep a través del código.

+1

Google sabe más de lo que piensas. Solo agrega '+ somepkg' a tu búsqueda. –

+0

@Thomas Problema es si no sabe qué paquete necesita. Por cierto, ITYM hoogle, no Google. –

+0

@DanielFischer Derecha. mi teléfono piensa hoogle == google, lo siento. Ah, y en este caso particular, sabíamos qué conjunto de paquetes buscar, (pero ciertamente estoy de acuerdo, tienes razón en general y sería bueno si el hoogle web incluyera más paquetes por defecto) –

Cuestiones relacionadas