diff options
author | Camil Staps | 2016-11-27 23:28:01 +0100 |
---|---|---|
committer | Camil Staps | 2016-11-27 23:28:01 +0100 |
commit | 2e3a521ae5428891f03ccea9913915b5590a28fb (patch) | |
tree | 08b28d57a6790b2f78a54735d722eda69fba7113 /Logic.icl | |
parent | Really fix #1 (diff) |
Fix usage string and removeSubOptions
Diffstat (limited to 'Logic.icl')
-rw-r--r-- | Logic.icl | 9 |
1 files changed, 8 insertions, 1 deletions
@@ -226,7 +226,14 @@ all_atoms (App1 _ e) = all_atoms e all_atoms (App2 e1 _ e2) = removeDup (all_atoms e1 ++ all_atoms e2) removeSubOptions :: [[AtomOption]] -> [[AtomOption]] -removeSubOptions opts = filter (\this -> not (any (\that -> all (flip isMember that) this) (removeMember this opts))) opts +removeSubOptions opts = remove opts opts +where + remove :: [[AtomOption]] [[AtomOption]] -> [[AtomOption]] + remove [] _ = [] + remove [opt:opts] list + | any (\x -> all (flip isMember x) opt) list` = remove opts list` + | otherwise = [opt:remove opts list] + where list` = removeMember opt list all_atom_options :: Expr -> [[AtomOption]] all_atom_options e = removeSubOptions [opt \\ opt <- all_opts (sort (all_atoms e)) []] |