Ho usato il criterio delle librerie e cmdargs.Opzioni riga di comando selezionate dalla libreria criteri
Quando compilo il programma completamente senza cmdargs ed eseguo ad es. ./prog --help quindi ricevo una risposta indesiderata dal criterio sulle opzioni possibili e il numero di esecuzioni ecc.
Quando lo compilo ed eseguo come sotto la riga di comando le opzioni vengono prima rilevate dal mio codice quindi quindi leggi per criterio. Il criterio quindi riporta successivamente e l'errore mi dice che l'opzione --byte è sconosciuta. Non ho visto nulla nella documentazione dei criteri su come questo potrebbe essere spento o aggirato. C'è un modo per cancellare le opzioni della riga di comando di averlo letto? Altrimenti avrei bisogno di usare per es. CPUTime invece di criterio, per me va bene dal momento che ho bisogno di un sacco di funzionalità e dati extra forniti dal criterio.
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE DeriveDataTypeable #-}
import System.Console.CmdArgs
data Strlen = Strlen {byte :: Int} deriving (Data, Typeable, Show)
strlen = cmdArgsMode $ Strlen {byte = def} &= summary "MessagePack benchmark v0.04"
main = do
n <- cmdArgsRun strlen
let datastring = take (byte n) $ randomRs ('a','z') (mkStdGen 3)
putStrLn "Starting..."
conn <- connect "192.168.35.62" 8081
defaultMain [bench "sendReceive" $ whnfIO (mywl conn datastring)]
Ho paura di non capire come applicare questo al mio frammento di codice. –
@JFritsch Ok, ho appena visto i documenti di cmdargs, se li capisco bene, dovresti aggiungere un campo per altri argomenti al tuo tipo ('Strlen') e collezionarli lì con' args'. Tuttavia, non sono sicuro di ciò che fa cmdargs con le opzioni sconosciute, quali sarebbero gli argomenti dei criteri. Se vuoi che il criterio usi solo le impostazioni predefinite, 'withArgs [] $ defaultMain ...' è semplice e funziona. Se vuoi passare gli argomenti fissi al criterio, 'withArgs [" -s "," 200 "]' ad es. –
Funziona ovviamente se importare System.Environment (withArgs). Mi chiedo se c'è qualcosa di più elegante che mantiene la magra binario risultante. –