Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120

    [Haskell] conversiione di un tipo definito da me in un IO()

    Ciao,
    ho scritto un progettino per l'uni e dovrei fare una piccola presentazione.
    Il progetto consiste nel scrivere una funzione che inferisce il tipo a una lambda espressione.
    Ai fini della presentazione, giusto per comodità, vorrei scrivere alcune funzioncine che invochino la mia funzione su delle lambda espressioni di esempio e gli aggiungano dell'output di controllo.
    Ad esempio come output vorrei avere :
    codice:
    lambda termine: (\x f -> f (\y -> x y)(\z t -> x (t z)))
    tipo inferito da ghci: (r1 -> r2) -> ((r1 -> r2) -> (r3 -> (r3 -> r1) -> r2) -> r) -> r
    tipo inferito da t: (i -> j) -> ((i -> j) -> (h -> (h -> i) -> j) -> k) -> k
    dove t è le mia funzione.
    Ho pensato di scrivere queste funzioni di esempio in questo modo:
    codice:
    t13 :: IO()
    t13 = do putStr "lambda termine: (\\x f -> f(\\y -> x y)(\\z t -> x (t z)))\n"
             putStr "tipo inferito da ghci: (r1 -> r2) -> ((r1 -> r2) -> (r3 -> (r3 -> r1) -> r2) -> r) -> r\n"
             putStr ("tipo inferito dal t: " ++   output di t sulla lambda espressione)
    Il punto è che non so come convertire l'output di t in un IO().

    t ha tipo
    t:: Expr -> Ttype
    dove Ttype è definito così:
    codice:
    data Ttype = TArrow Ttype Ttype   --tipo freccia
               | TVar String              --tipo variabile
               deriving (Eq)
    e lo mostro a video ridefinendo Show in questo modo:
    codice:
    instance Show Ttype where
        show (TVar x)   = x
        show (TArrow x y) = printPar x ++ " -> " ++ show y
    
    printPar :: Ttype -> String
    printPar t = case t of
                            TArrow _ _ -> "(" ++ show t ++ ")"
                             _              -> show t
    Sapreste dirmi se è possibile convertire il tipo Ttype in un IO() senza dover modificare il tipo di t?
    Ultima modifica di Nikopol; 03-12-2015 a 03:40
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

  2. #2
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    È un'isstanza di show, puoi usare show per trasformarlo in stringa e poi stampare la stringa, oppure usare print che stampa la conversione in stringa direttamente.
    Francamente non capisco il problema.
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

  3. #3
    Utente di HTML.it L'avatar di Nikopol
    Registrato dal
    Jan 2011
    Messaggi
    120
    Cercavo di stampare l' output di t con putStr senza invocare prima show...
    La stanchezza gioca brutti scherzi .
    Grazie mille
    La Guida Galattica è infallibile.
    È la realtà, spesso, ad essere inesatta.

  4. #4
    Utente di HTML.it L'avatar di Scara95
    Registrato dal
    Jul 2009
    residenza
    Zimella (VR)
    Messaggi
    2,590
    Di nulla
    "Quid enim est, quod contra vim sine vi fieri possit?" - Cicerone, Ad Familiares

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.