很多函数式编程爱好者都把FP称为Monadic Programming,意思是用Monad进行编程.我想FP作为一种比较成熟的编程模式,应该有一套比较规范的操作模式吧.因为Free能把任何F[A]升格成Monad,所以Free的算式(AST).算法(Interpreter)关注分离(separation of concern)模式应该可以成为一种规范的FP编程模式.我们在前面的几篇讨论中都涉及了一些AST的设计和运算,但都是一些功能单一,离散的例子.如果希望通过Free获取一个完整可用的程序,就…
1.使用UNION UNION 可以涉及编写多条SELECT语句,首先看看单条语句 第一条SELECT语句把Illinois,Indiana,Michigan等州的缩写传递给IN子句,检索出这些州的所有行.第二条SELECT利用简单的相等测试找出所有的'Fun4All'的cust_name 接下来我们使用UNION来组合两条语句,如下: 使用UNION关键字分隔两条SELECT语句,输出组合成一个查询结果集. 以上处理结果跟下面只用WHERE语句来处理是一样的 在这个简单的例子中,使用UNION…
通常来讲,注释语句有四种: 1.* message; 2.COMMENT message; 3./* message */ 4.%* message; 第一种的主要限制是注释之中不得有“:”符号.通常用于非宏程序之中. 第二种和第一种相同. 第三种的主要限制是不得包含另外的注释语句. 第四种用于在宏程序里做注释,其功能和第一种在非宏的文本里很相似.第三种注释对宏和非宏程序并无区分.如果把第一种方式移植到宏程序里,出错误的机率非常大.举一例: 方式1和2属于完整的SAS声明语句.他们在程序编译时总…
一直感觉FP比较虚,可能太多学术性的东西,不知道如何把这些由数学理论在背后支持的一套全新数据类型和数据结构在现实开发中加以使用.直到Free Monad,才真正感觉能用FP方式进行编程了.在前面我们已经花了不小篇幅来了解Free Monad,这次我想跟大家讨论一下用Free Monad来编写一个真正能运行的完整应用程序.当然,这个程序必须具备FP特性,比如函数组合(function composition),纯代码(pure code),延迟副作用(delayed side effect)等等.…
Monad Reader就是一种函数的组合.在scalaz里函数(function)本身就是Monad,自然也就是Functor和applicative.我们可以用Monadic方法进行函数组合: import scalaz._ import Scalaz._ object decompose { //两个测试函数 val f = (_: Int) + //> f : Int => Int = <function1> val g = (_: Int) * //> g : In…
经典SQL语句大全 一.基础 1.说明:创建数据库CREATE DATABASE database-name 2.说明:删除数据库drop database dbname3.说明:备份sql server--- 创建 备份数据的 deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'--- 开始 备份BACKUP DATABASE pubs TO testBack 4.说明:…
在上一节我们介绍了Monad.我们知道Monad是一个高度概括的抽象模型.好像创造Monad的目的是为了抽取各种数据类型的共性组件函数汇集成一套组件库从而避免重复编码.这些能对什么是Monad提供一个明确的答案吗?我们先从上节设计的Monad组件库中的一些基本函数来加深一点对Monad的了解: trait Monad[M[_]] extends Functor[M] { def unit[A](a: A): M[A] def flatMap[A,B](ma: M[A])(f: A => M[B]…
基础 创建数据库 CREATE DATABASE database-name 1 删除数据库 drop database dbname 1 备份sql server 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' 1 2 开始 备份 BACKUP DATABASE pubs TO testBack 1 创建新表 create table tabn…
1一.基础  2  31.说明:创建数据库  4Create DATABASE database-name  5  62.说明:删除数据库  7drop database dbname  8  93.说明:备份sql server 10--- 创建 备份数据的 device 11USE master 12EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat 13--- 开始 备份 14BACKUP DATABASE …
一.基础  2  31.说明:创建数据库  4Create DATABASE database-name  5  62.说明:删除数据库  7drop database dbname  8  93.说明:备份sql server 10--- 创建 备份数据的 device 11USE master 12EXEC sp_addumpdevice disk, testBack, c:\mssql7backup\MyNwind_1.dat 13--- 开始 备份 14BACKUP DATABASE p…