2009-05-18 63 views
2

我试图打印功能的输出只有当它是真实的,但迄今为止所有的尝试已经unsuccsessful。F#打印如果为真

东西上的行:

let printFactor a b = if b then print_any((a,b)) 

b哪里是一个布尔值和a是整数。 当我尝试它,我得到:

val printFactor : 'a -> bool -> unit 

有什么建议?

编辑:

摆在即时通讯方面的事情想与管道运营商使用。假设我有一个函数xyz,它输出(int,bool)的列表。我喜欢在这些行上做点什么:

xyz |> printFactor 

只打印真值。

+0

我不清楚你在问什么,或者你在做什么。 – Brian 2009-05-18 19:23:03

+0

这是您写的函数的正确类型签名。什么是函数`print_any`呢?接下来看看那里。 – nlucaroni 2009-05-18 19:33:40

回答

5

你可以做例如这

let xyz() = [ (1,true); (2,false) ] 

let printFactor (i,b) = 
    if b then 
     printfn "%A" i 

xyz() |> List.iter printFactor 

但它可能会更习惯做,例如,这

xyz() 
|> List.filter (fun (i,b) -> b) 
|> List.iter (fun (i,b) -> printfn "%d" i) 

即先过滤,然后打印。