Erlang-获取具有最高值的记录和具有最低值的记录

Erlang-获取具有最高值的记录和具有最低值的记录,erlang,Erlang,我想显示产品记录列表的价格范围 假设我有这个产品列表,其数量/价格为二进制值 Products = [#product{amount=<<"20.21">>}, #product{amount=<<"30.21">>}, #product{amount=<<"9.21">>}] Products=[#product{amount=},#product{amount=},#product{amount=}] 我的目标是显示

我想显示产品记录列表的价格范围

假设我有这个产品列表,其数量/价格为二进制值

Products = [#product{amount=<<"20.21">>}, #product{amount=<<"30.21">>}, #product{amount=<<"9.21">>}]
Products=[#product{amount=},#product{amount=},#product{amount=}]
我的目标是显示从最小到最大的价格范围,例如-

在这里怎么能这样呢?

-module(我的)。
-module(my).
-compile(export_all).
-record(product, {name, price}).

products() ->
    [
        #product{name='a', price= <<"20.21">>}, 
        #product{name='b', price= <<"30.21">>}, 
        #product{name='c', price= <<"9.21">>},
        #product{name='d', price= <<"11.21">>}
    ].

price_range(Products) ->

    PriceFunc = fun(Product, {Min, Max}) ->
                    Price = binary_to_float(Product#product.price),
                    NewMin = min(Min, Price),
                    NewMax = max(Max, Price),
                    {NewMin, NewMax}
                end,

    InitPrice = binary_to_float(
                  (hd(Products))#product.price
                ),

    lists:foldl(PriceFunc, {InitPrice, InitPrice}, Products).
-编译(全部导出)。 -记录(产品,{名称,价格})。 产品()-> [ #产品{name='a',价格=}, #产品{name='b',价格=}, #产品{name='c',price=}, #产品{name='d',价格=} ]. 价格范围(产品)-> PriceFunc=fun(产品,{Min,Max})-> 价格=二进制浮点数(产品#产品价格), NewMin=min(最小值,价格), NewMax=max(最大值,价格), {NewMin,NewMax} 完,, InitPrice=二进制浮点数( (hd(产品)#产品价格 ), 列表:foldl(PriceFunc,{InitPrice,InitPrice},Products)。
在外壳中:

9> c(my).                   
my.erl:2: Warning: export_all flag enabled - all functions will be exported
{ok,my}

10> Products = my:products().
[{product,a,<<"20.21">>},
 {product,b,<<"30.21">>},
 {product,c,<<"9.21">>},
 {product,d,<<"11.21">>}]

11> my:price_range(Products).
{9.21,30.21}
9>c(我的)。
my.erl:2:警告:已启用导出\u所有标志-将导出所有功能
{好的,我的}
10> Products=my:Products()。
[{乘积,a,},
{乘积,b,},
{积,c,},
{乘积,d,}]
11> 我的:价格范围(产品)。
{9.21,30.21}

如果产品列表为空,则将失败