小编las*_*aro的帖子

如何按字母顺序比较scala元组?

鉴于两个相同的元组,我如何按字典顺序比较它们?看起来这应该像下面的代码片段一样简单,但事实并非如此.任何简单的例子如何做到这一点?

var x = (1,2,3) < (1,2,4)
Run Code Online (Sandbox Code Playgroud)

如果他们列出,我可以定义一个递归函数,比较列表的头部直到找到差异或列表的结尾,但我不认为我可以为元组做到这一点.

scala tuples

17
推荐指数
2
解决办法
7176
查看次数

在erlang中表达动作的时间逻辑.任何自然的方式?

我想在Erlang中翻译TLA中指定的一些操作.你能想到在Erlang或任何可用的框架中直接这样做的自然方式吗?简而言之(一个非常小的一个),TLA动作是变量的条件,其中一些是引导的,这意味着它们代表了下一个状态中变量的值.例如:

Action(x,y,z) ->
    and PredicateA(x),
    and or PredicateB(y)
        or PredicateC(z)
    and x' = x+1
Run Code Online (Sandbox Code Playgroud)

此动作是指,每当系统的状态是这样的,PredicateA对于变量为真x,要么PredicateB为真yPredicateC为真对z,则系统可以改变它的状态,以便确保所有内容均不同之处在于同一x改变为当前值加1 .

表达在Erlang中需要大量的管道,至少在我发现的方式.例如,通过在触发条件之前使用循环来评估条件,例如:

what_to_do(State,NewInfo) ->
    PA = IsPredicateA(State,NewInfo),
    PB = IsPredicateB(State,NewInfo),
    PC = IsPredicateC(State,NewInfo),
    [{can_do_Action1, PA and (PB or PC}, %this is the action specified above.
     {can_do_Action2, PA and PC},        %this is some other action
     {can_do_Action3, true}]             %this is some action that may be executed at any time. …
Run Code Online (Sandbox Code Playgroud)

erlang tla+

7
推荐指数
1
解决办法
432
查看次数

如何使用erlang的编译器批准子类型记录?

我正在尝试定义记录#a和记录#b,以便#b扩展#a,这样我就可以在某些情况下将#b(以及#a的其他子类型)视为#a.但是编译器并不喜欢它,并且一直试图根据我对它的第一次访问来猜测记录类型.以下代码触发警告.

-module(sandbox).  
-record(a,{alfa,beta}).  
-record(b,{alfa,beta,gama}).  
-export([test/0]).
test() ->  
    A = #b{alfa=1,beta = 2,gama=3},  
    self()!{msg,A},  
    receive  
    {msg,Msg} ->  
        Alfa = Msg#b.alfa,
        Beta = Msg#b.beta,
        case is_record(Msg,b) of
            true ->
                Gama = Msg#b.gama;
            false->                  %% Warning. Erlang assumes that Msg is a #b and therefore this will never match.
                Gama = []
        end
end,
io:format("~p ~p ~p",[Alfa,Beta,Gama]).


test1() ->
A = #b{alfa=1,beta = 2,gama=3},
self()!{msg,A},
receive
    {msg,Msg} ->
        Alfa = Msg#a.alfa,
        Beta = Msg#a.beta,
        case is_record(Msg,b) of
            true ->                  %% Warning. Erlang assumes …
Run Code Online (Sandbox Code Playgroud)

erlang record compiler-warnings

1
推荐指数
1
解决办法
545
查看次数

标签 统计

erlang ×2

compiler-warnings ×1

record ×1

scala ×1

tla+ ×1

tuples ×1