私は2つのライブラリ(audio.lhsまたはvideo.lhs)のうちの1つを選択し、指定されたカテゴリで順序付けられフィルタリングされたリストを持つpdfを返すプログラムを作成しています。Haskell:入力値を使用してフィルタリングとソート
mymain = do {putStrLn "What do you wanna search, Video or Audio?";
tipo <- getLine;
if tipo == "Audio"
then do {
a <- readFile "audio.lhs" ;
let text = splitEvery 7 (splitRegex (mkRegex "\t") a)
list = map musicFile text
select = filter ((>1000) .size) list
orderList = sortBy (comparing title)
dir = Dir orderList
hs = "import Dir\nimport TeX\nimport System.Cmd"
++ "\ntoTeX= do { writeFile \"out.tex\" $ prettyprint dat ;"
++ "system \"pdflatex out\"}"
++ "\ndat="
++ show dir
in do { writeFile "dat.hs" hs ;
putStrLn "\nOk.\nNow load \'dat.hs\' and run \'toTeX\'\n"
}}...
すべてが実行されているが、今、私はその機能
select = filter ((>1000) .size) list
と
orderList = sortBy (comparing title)
代わりにWの必要私が与えた値を使って釣り合っていると、プログラムのユーザーが選択した値で作業したいので、> 2000または< 500のファイルをフィルタリングしたい場合は、サイズまたはタイトルまたは別のもの。
私のデータ構造は
data File = File {
filename :: String ,
size :: Int ,
filetype :: String ,
copyright :: String ,
title :: String ,
artist :: String ,
year :: String } deriving Show
と
musicFile :: [String] -> File
musicFile [name, size, tipo, copy, title, artist, year] = File name (read size) tipo copy title artist year
任意の助けを喜んでいただければ幸いです。
ありがとうございます。
あなたはすでに 'getLine'でユーザー入力を利用しています。それはあなたが今したいこととどのように違うのですか?何を試しましたか? –
私は 'getLine'を使ってみましたが、整数を与えるときには理解できません。また、' getLine'値フィルタを持つ変数を使用しているときに、彼らが待っているものではないので失敗します。 – seph
私たちはここでペアプログラミングをしています:-)あなたは過去2日間にこのプログラムに関する4つの質問をしました。私はスタックオーバーフローが正しい場所であるかどうかはわかりません - 代わりに[Haskell IRCチャンネル](http://www.haskell.org/haskellwiki/IRC_channel)を代わりに使用しますか? –