当前位置: 首页 > news >正文

网站建设与维护模板枣强网站建设培训学校

网站建设与维护模板,枣强网站建设培训学校,京东网站是哪个公司做的,wordpress媒体库加载不出来目录 文章目录目录前言前文列表基础功能演示数字运算变量与代数运算列表处理Lambda 函数条件分支字符串源文件加载函数库列表处理函数库条件分支函数库数学库前言 通过开发一门类 Lisp 的编程语言来理解编程语言的设计思想#xff0c;本实践来自著名的《Build Your Own Lisp》…目录 文章目录目录前言前文列表基础功能演示数字运算变量与代数运算列表处理Lambda 函数条件分支字符串源文件加载函数库列表处理函数库条件分支函数库数学库前言 通过开发一门类 Lisp 的编程语言来理解编程语言的设计思想本实践来自著名的《Build Your Own Lisp》。 代码实现https://github.com/JmilkFan/Lispy 前文列表 《用 C 语言开发一门编程语言 — 交互式解析器》 《用 C 语言开发一门编程语言 — 语法解析器运行原理》 《用 C 语言开发一门编程语言 — 波兰表达式解析器》 《用 C 语言开发一门编程语言 — 表达式存储器》 《用 C 语言开发一门编程语言 — 符号表达式解析器》 《用 C 语言开发一门编程语言 — 引用表达式解析器》 《用 C 语言开发一门编程语言 — 变量的设计与实现》 《用 C 语言开发一门编程语言 — 基于 Lambda 表达式的函数设计与实现》 《用 C 语言开发一门编程语言 — 条件分支的设计与实现》 《用 C 语言开发一门编程语言 — 字符串的设计与实现》 基础功能演示 目前为止我们开发的编程语言已经拥有了以下功能 交互式解析器界面MPC 语法解析器基于波兰表达式的数字运算基于符号表达式的代数运算基于引用表达式的变量基于 Lambda 表达式的函数条件分支逻辑控制语句文件加载等等。 在本文中我们将完整的演示上述技术功能并尝试通过预定义一些常用的函数库来辅助编程。 数字运算 lispy 4 5 // 45 9 lispy - 8 3 // 8-3 5 lispy * 6 2 // 6 * 2 12 lispy / 10 5 // 10/5 2 lispy / 10 0 // 10/0 Division By Zero! lispy - (* 10 10) ( 1 1 1) // (10*10) - (111) 97变量与代数运算 lispy def {x} 1 () lispy x 1 2 lispy def {y} 2 () lispy x y 3 lispy def {a b} 2 3 () lispy a b 5 lispy x (* a b) y // x (a * b) y 9 lispy def {arglist} {a b c d} () lispy def arglist 1 2 3 4 () lispy list a b c d {1 2 3 4}列表处理 lispy def { l1 } {1 2 3} () lispy def { l2 } {4 5 6} () lispy head l1 {1} lispy tail l1 {2 3} lispy join l1 l2 {1 2 3 4 5 6} lispy list l1 l1 {{1 2 3} {1 2 3}} lispy eval { 1 2 3} 6Lambda 函数 lispy def {add-mul} (\ {x y} { x (* x y)}) () lispy add-mul 10 20 210 lispy add-mul 30 40 1230 lispy def {add-mul-ten} (add-mul 10) () lispy add-mul-ten 50 510条件分支 lispy def {x y} 100 200 () lispy if ( x y) { x y} {- x y} -100 lispy if ( x y) { x y} {- x y} 300字符串 lispy print Hello World! Hello World! () lispy error This is an error! This is an error!源文件加载 $ cat hello.lspy (print hello world.)$ main hello.lspy hello world.函数库 列表处理函数库 list.lspylib ; 空类型 (def {nil} {}); 布尔类型 (def {true} 1) (def {false} 0); 函数定义 Lambda 表达式 (def {fun} (\ {f b} {def (head f) (\ (tail f) b) })); 取列表中的第一、二、三项 (fun {fst l} { eval (head l) }) (fun {snd l} { eval (head (tail l)) }) (fun {trd l} { eval (head (tail (tail l))) }); 获取列表长度 (fun {len l} {if ( l nil){0}{ 1 (len (tail l))} }); 取列表中的第 n 项 (fun {nth n l} {if ( n 0){fst l}{nth (- n 1) (tail l)} }); 取列表中的最后一项 (fun {last l} {nth (- (len l) 1) l}); 取列表中的前 n 项 (fun {take n l} {if ( n 0){nil}{join (head l) (take (- n 1) (tail l))} }); 删除列表中的前 n 项 (fun {drop n l} {if ( n 0){l}{drop (- n 1) (tail l)} }); 从第 n 项分裂列表 (fun {split n l} {list (take n l) (drop n l)}); 取元素的 idx (fun {elem x l} {if ( l nil){false}{if ( x (fst l)) {true} {elem x (tail l)}} }); Map 函数所有列表元素执行相同的操作 (fun {map f l} {if ( l nil){nil}{join (list (f (fst l))) (map f (tail l))} }); Filter 函数根据过滤条件进行元素过滤 (fun {filter f l} {if ( l nil){nil}{join (if (f (fst l)) {head l} {nil}) (filter f (tail l))} }); Fold Left 函数向左折叠逐一执行指定函数操作 (fun {foldl f z l} {if ( l nil){z}{foldl f (f z (fst l)) (tail l)} }); 向左折叠求和 (fun {sum l} {foldl 0 l}) ; 向左折叠求积 (fun {product l} {foldl * 1 l})应用列表处理。 lispy load ./samples/list.lspylib () lispy def {l1} {1 2 3 4 5 6} () lispy len l1 6 lispy nth 2 l1 3 lispy last l1 6 lispy take 3 l1 {1 2 3} lispy def {l2} (drop 4 l1) () lispy l2 {5 6} lispy split 5 l1 {{1 2 3 4 5} {6}} lispy elem 1 l1 1 lispy elem 7 l1 0 lispy map (\ {x} { x 10}) {5 2 11} // 所有元素的数值 10 {15 12 21} lispy filter (\ {x} { x 2}) {5 2 11 -7 8 1} // 过滤出 2 的元素 {5 11 8} lispy sum l1 // 求和 21 lispy product l1 // 求积 720条件分支函数库 condition.lspylib ; 空类型 (def {nil} {}); 布尔类型 (def {true} 1) (def {false} 0); 函数定义 Lambda 表达式 (def {fun} (\ {f b} {def (head f) (\ (tail f) b) })); 取列表中的第一、二、三项 (fun {fst l} { eval (head l) }) (fun {snd l} { eval (head (tail l)) }) (fun {trd l} { eval (head (tail (tail l))) }); Unpack List for Function (fun {unpack f l} {eval (join (list f) l) }) ; Pack List for Function (fun {pack f xs} {f xs}); switch 关键字 (fun {switch cs} {if ( cs nil){error No Selection Found}{if (fst (fst cs)) {snd (fst cs)} {unpack switch (tail cs)}} }); default 关键字 (def {default} true); case 关键字 (fun {case x cs} {if ( cs nil){error No Case Found}{if ( x (fst (fst cs))) {snd (fst cs)} {unpack case (join (list x) (tail cs))}} }); 条件选择月份后缀函数 (fun {month-day-suffix i} {switch{( i 0) st}{( i 1) nd}{( i 3) rd}{default th} }); 条件选择星期几函数 (fun {day-name x} {case x{0 Monday}{1 Tuesday}{2 Wednesday}{3 Thursday}{4 Friday}{5 Saturday}{6 Sunday} })应用switch/case 语句。 lispy load ./samples/condition.lspylib () lispy month-day-suffix 1 nd lispy month-day-suffix 2 th lispy day-name 0 Monday lispy day-name 1 Tuesday数学库 fibonacci.lspylib ; 空类型 (def {nil} {}); 布尔类型 (def {true} 1) (def {false} 0); 函数定义 Lambda 表达式 (def {fun} (\ {f b} {def (head f) (\ (tail f) b) })); 取列表中的第一、二、三项 (fun {fst l} { eval (head l) }) (fun {snd l} { eval (head (tail l)) }) (fun {trd l} { eval (head (tail (tail l))) }); Unpack List for Function (fun {unpack f l} {eval (join (list f) l) }) ; Pack List for Function (fun {pack f xs} {f xs}); switch 关键字 (fun {switch cs} {if ( cs nil){error No Selection Found}{if (fst (fst cs)) {snd (fst cs)} {unpack switch (tail cs)}} }); default 关键字 (def {default} true); Fibonacci (fun {fib n} {switch{ ( n 0) 0 }{ ( n 1) 1 }{ default ( (fib (- n 1)) (fib (- n 2))) } })应用 lispy load ./samples/fibonacci.lspylib () lispy () lispy fib 10 55 lispy fib 20 6765
http://www.hkea.cn/news/14486426/

相关文章:

  • 深圳购物网站建WordPress多级目录多种样式
  • 安装网站系统厦门做网站的公司
  • 济南街道办网站建设针对人群不同 网站做细分
  • 天津市住房和城乡建设网站wordpress 重置密码链接
  • 网站搜索排名怎么做饲料网站建设 中企动力
  • 做网站公司负责修图吗二手书店网站建设规划书
  • 有哪些好的建站平台海口网站排名
  • 人脉做的最好的网站牟平网站制作
  • 北京建网站找哪个公司如何做公司网站优化
  • 做食品那些网站黄骅市网站建设
  • 局域网内建设网站上海网络推广产品
  • 做网站的公司陕西省住建厅网站官网
  • 一个网站怎么做软件好用吗上海网站建设管理系统
  • 常用网站后缀宝安营销型网站费用
  • 怎么给自己做个网站吗网站建设评比文章
  • 网站网页设计制作天津免费建站
  • 照片书哪家网站做的好wordpress新注册用户欢迎
  • 教育主管部门建设的专题资源网站是河南专业网站建设公司哪家好
  • 中国建设银行网站首页签约什么网站做玩具的外贸
  • 如何制作自己的公司网站wordpress 角色等级
  • 教务系统门户网站个人网站收款接口
  • 网站改版怎么改门户网站集群建设方案
  • 上海响应式网站建设费用网站icp查询系统
  • 保险公司官方网站苏州网站制作及推广
  • 手机号交易网站源码哪个网站买东西是正品又便宜
  • 休闲旅游网站建设贸易公司做推广的网站
  • 天津网站备案在哪照相百度搜索关键词排名优化技术
  • 宜昌网站排名优化电商网站怎样做优化才最合理
  • 网站的投票系统怎么做网站可做哪些服务
  • 本地网站搭建时需要使用的软件是建站代理