
Am 09.02.2016 um 18:24 schrieb Kosyrev Serge:
foo (thInt (fromIntegral (c2hsValueInt cexp))) (thInt (fromIntegral (c2hsValueInt cexp)))
I clearly made a mistake of duplicating a real expression.. should have picked two different expressions for an example.
The counterexamples still work. This: foo (thInt1 (fromIntegral1 (c2hsValueInt1 cexp1))) (thInt2 (fromIntegral2 (c2hsValueInt2 cexp2))) can still become this: let int1 = thInt1 (fromIntegral1 (c2hsValueInt1 cexp1)) int2 = thInt2 (fromIntegral2 (c2hsValueInt2 cexp2)) in foo int1 int2 and that's perfectly readable in my book. If you don't like the nested parentheses, use function composition: let fn1 = thInt1 . fromIntegral1 . c2hsValueInt1 fn2 = thInt2 . fromIntegral2 . c2hsValueInt2 in foo (fn1 int1) (fn2 int2) Function composition isn't the main tool though; I found that naming subexpressions always works, plus the names can help with readability if they are chosen wisely.