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

宁波公司网站建设营销型网站建设php源码

宁波公司网站建设,营销型网站建设php源码,制作wordpress模板教程视频教程,vue.js做网站目录 文章目录目录前言前文列表基础功能演示数字运算变量与代数运算列表处理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.w-s-a.com/news/964126/

相关文章:

  • 大连网站建设外贸wordpress添加文章属性
  • 商城网站建设合同范本网上哪里可以免费学编程
  • 服务器公司网站博客wordpress怎么编辑
  • 网站建设网络推广柯西乡塘网站建设
  • 企业做网站需要多少钱企业资质查询系统官网
  • 网站建设需要知识百度统计数据
  • 自已如何做网站建设通网站会员共享密码
  • 做网站学习什么wordpress 文件夹
  • 前端移动网站开发wordpress图文混排
  • 企业网站建站那种好商城类网站怎么优化
  • 手机微网站怎么制作的网上找设计师
  • 网站建设包括哪些方面学校网站 建设
  • 贵阳网站优化公司建筑设计师用什么软件
  • 网站建设的小说静态网页模板免费网站
  • 芜湖建设厅官方网站wordpress自动设置缩略图
  • 推荐网站网页湛江网站建设哪家优惠多
  • 传奇网站免费空间网店装修店面
  • 网站改版 重新收录湖南建筑信息一体化管理平台
  • 可以做直播卖产品的网站陕西省建设银行网站
  • 搭建网站的英语seo优化专员招聘
  • 做网站深紫色搭配什么颜色网站的在线支付怎么做
  • 中国最大网站建设公司长沙专业做网站公司哪家好
  • 金峰辉网站建设菏泽财富中心网站建设
  • 怎么做网站站长视频企业网站开发意义
  • 网站创建多少钱商标自助查询系统官网
  • 免费做App和网站的平台广州做网站推广的公司
  • 衡水做网站推广的公司wordpress相册滑动
  • 不用域名也可以做网站公司网站建设制作难么
  • 学做网站培训机构wordpress 图片拉伸
  • 成都捕鱼网站建设wordpress自定义文章类别