《Erlang 程序设计》练习答案 -- 第八章 顺序编程补遗
来源:互联网 发布:阿里云企业邮箱 pop 编辑:程序博客网 时间:2024/05/18 02:12
% (1).复习这一张关于Mod:module_info()的部分。输入命令dict:module_info()。这个模块返回了多少函数?
% (2).code:all_loaded() 命令会返回一个由{Mod, File}对构成的列表,% 内含所有Erlang系统载入的模块。编写一些函数来找出% 哪个模块导出的函数最多?% 哪个函数名最常见。% 不带歧义的函数名(只出现过一次)。-module(getInfo).-export([get_info/0, list_size/1, count_function/2, find_max/1, find_one/1, for/4]).list_size(L) -> list_size(L, 0).list_size([H|T], Size) -> list_size(T, Size+1);list_size([], Size) -> Size.% 找出哪个模块导出的函数最多%get_info() ->% Info = code:all_loaded(),% get_info(Info, -1).%%get_info([H|T], Max) ->% {Name, _} = H,% [_, {exports, L}, _, _, _] = Name:module_info(),% case (list_size(L) >= Max) of% true -> get_info(T, list_size(L));% false -> get_info(T, Max)% end;%get_info([], Max) ->% Max.% 哪个函数名最常见get_info() -> Info = code:all_loaded(), get_info(Info, #{}).get_info([H|T], X) -> {Name, _} = H, [_, {exports, L}, _, _, _] = Name:module_info(), get_info(T, count_function(L, X));get_info([], X) -> %X. %问题2,找出出现次数最多的 %find_max(X). %问题3,找出出现一次的 %find_one(X).count_function([H|T], X) -> {FuncName, _} = H, case maps:is_key(FuncName, X) of false -> count_function(T, X#{FuncName => 1}); true -> #{FuncName := Count} = X, count_function(T, X#{FuncName := Count+1}) end;count_function([], X) -> X.% 问题2 找出出现次数最多的find_max(X) -> L = maps:keys(X), for(L, X, "", -1).% 问题3 找出只在模块中出现过一次的函数。find_one(X) -> L = maps:keys(X), lists:filter(fun(E) -> {ok, Value} = maps:find(E, X), Value == 1 end, L).for([H|T], X, MaxKey, MaxValue) -> {ok, Value} = maps:find(H, X), case (Value > MaxValue) of true -> for(T, X, H, Value); false -> for(T, X, MaxKey, MaxValue) end;for([], X, MaxKey, MaxValue) -> {MaxKey, MaxValue}.
导出最多的函数
最多导出 324 个函数
最常见的函数名
只出现过一次的函数名
1 0
- 《Erlang 程序设计》练习答案 -- 第八章 顺序编程补遗
- 《Erlang 程序设计》练习答案 -- 第十二章 并发编程
- 《Erlang 程序设计》练习答案 -- 第三章 基本概念
- 《Erlang 程序设计》练习答案 -- 第九章 类型
- 《Erlang 程序设计》练习答案 -- 第六章 顺序程序的错误处理
- 《Erlang 程序设计》练习答案 -- 第二章 Erlang 速览
- 《Erlang 程序设计》练习答案 -- 第四章 模块与函数
- 《Erlang 程序设计》练习答案 -- 第五章 记录与映射组
- 《Erlang 程序设计》练习答案 -- 第十三章 并发程序中的错误
- 《Erlang程序设计》学习笔记-第3章 顺序型编程
- c++.primer.plus第五版第八章编程练习答案
- C++ Primer Plus第六版 第八章 编程练习答案
- C ++ Primer Plus 第六版 第八章编程练习答案
- C++ Primer Plus第五版 第八章 编程练习答案
- Erlang 程序设计 学习笔记(五) 顺序编程
- 《Erlang 程序设计》练习答案 -- 第七章 二进制型与位语法
- erlang 入门练习 顺序编程一
- 第八章 编程练习
- DOS攻击之SYN攻击法
- Android开发知识点总结
- web前端开发需要学习什么?
- Table被web编程弃用的原因?
- 深度学习国外经典教程——大师带你入门(视频、PPT讲稿)
- 《Erlang 程序设计》练习答案 -- 第八章 顺序编程补遗
- 面向业务的立体化高可用架构设计
- SecureCRT中文显示乱码
- 恢复ORACLE被误更新或删除数据的办法
- 在 CentOS 6.7 上配置 Cisco AnyConnect VPN
- 提升页面转化率100招
- 自定义布局
- 堆栈
- jquery操作select下拉框的多种方法(选中,取值,赋值等) 转载