Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
1.0k views
in Technique[技术] by (71.8m points)

haskell - Generating a Truth Table

If I have some values A B C, is is possible to generate a list of all their possible truth values: the input is ["X", "Y", "Z"] e.g. the list contains 8 lists (rows of table)

[ [ ("X",True), ("Y",True), ("Z", True) ],
[ ("X",True), ("Y",True), ("Z", False) ],.... ]

Are there any hints on how to do this?

I would like to generate a truth table for an arbitrary number of variables.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

What you need is not a truth table but rather a cartesian product. You can obtain what you want using list comprehension: [(x,y,z) | x <- [True, False], y <- [True,False], z <- [True,False]]

If you want to keep variable names you can use tuples: [(x,y,z) | x <- [("X", True), ("X", False)], y <- [("Y", True), ("Y", False)], z <- [("Z", True),("Z", False)]]


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...