Erlang list comprehension

erlang, list-comprehension, variable-assignment

Solution

A way of writing it directly without a `fun` would be to use a `begin ... end` block ending with a boolean test:

[ CertainDisease || {CertainDisease,KnownSymptoms} <- Expertise,
                    begin
                        C = length(PatientSymptoms) - length(PatientSymptoms -- KnownSymptoms),
                        C >= 2 andalso C <= 5
                    end ]

Problem

I'm testing an expression with two inequalities for the condition of a list comprehension. Is there a way to have assignments here and not duplicate that expression? The following code doesn't work, but I wish it would: ``` diagnose(Expertise,PatientSymptoms) -> {[CertainDisease|| {CertainDisease,KnownSymptoms}<-Expertise, C=length(PatientSymptoms)-length(PatientSymptoms--KnownSymptoms), C>=2, C<=5 ]}. ```

Original source