Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang列表理解_Erlang_Variable Assignment_List Comprehension - Fatal编程技术网

Erlang列表理解

Erlang列表理解,erlang,variable-assignment,list-comprehension,Erlang,Variable Assignment,List Comprehension,我正在测试一个带有两个不等式的表达式,它的条件是列表理解。有没有一种方法可以在这里进行赋值而不复制该表达式 以下代码不起作用,但我希望它能起作用: diagnose(Expertise,PatientSymptoms) -> {[CertainDisease|| {CertainDisease,KnownSymptoms}<-Expertise, C=length(PatientSymptoms)-length(PatientSymptom

我正在测试一个带有两个不等式的表达式,它的条件是列表理解。有没有一种方法可以在这里进行赋值而不复制该表达式

以下代码不起作用,但我希望它能起作用:

diagnose(Expertise,PatientSymptoms) ->
    {[CertainDisease||
         {CertainDisease,KnownSymptoms}<-Expertise,
         C=length(PatientSymptoms)-length(PatientSymptoms--KnownSymptoms),
         C>=2,
         C<=5      
      ]}.
诊断(专家、患者症状)->
{[某些疾病]||
{某些疾病,已知症状}=2,

C定义一个过滤函数;这样,每个元素调用一次过滤函数,消除了重复计算
C

Filter = fun({CertainDisease, KnownSymptoms}) ->
    C = length(PatientSymptoms) - length(PatientSymptoms--KnownSymptoms),
    C >= 2 andalso C <= 5       
end
Filter=fun({CertainDisease,KnownSymptoms})->
C=长度(患者症状)-长度(患者症状-已知症状),

C>=2,并且C一种不带
fun
直接编写的方法是使用
begin…end
块,以布尔测试结尾:

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

[CertainDisease | |{CertainDisease,KnownsSymptoms}=2,也可以将赋值转换为单例生成器:

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

{CertainDisease,KnownSymptoms}{NewDisease}=diagnose([{d1[s1,s2,s3]},{d2[s1,s2,s3,s4]}],[s1,s2,s4])这能回答你的问题吗?只要过滤器
fun
患者症状处于相同的动态范围内,就应该工作。这就是我一分钟前问的问题。
{[CertainDisease||
     {CertainDisease,KnownSymptoms} <- Expertise,
     C <- [length(PatientSymptoms)-length(PatientSymptoms--KnownSymptoms)],
     C >= 2,
     C <= 5      
]}.