- 博客(217)
- 收藏
- 关注

原创 AWS 实战
AWS (Amazon Web Service)要使用亚马逊的免费云服务 AWS,必须先注册账号,然后绑定信用卡。创建 AMI(Amazon Machine Image)选择 EC2 服务EC2 Management Console(EC2 Dashboard) 打开 EC2 虚拟服务器的管理控制台(默认打开仪表盘)Launch Instance 点击创建实例按钮Ama...
2018-07-24 22:11:06
2404

原创 Haskell语言学习笔记(1)
函数, 列表解析, (.), ($), data, type, newtype, 类型类(typeclass)
2015-05-11 11:47:19
2907

原创 C++11尝鲜:std::move和std::forward源码分析
std::move和std::forward是C++0x中新增的标准库函数,分别用于实现移动语意和完美转发。下面让我们分析一下这两个函数在gcc4.6中的具体实现。预备知识引用折叠规则:X& + & => X&X&& + & => X&X& + && => X&X&& + && => X&&函数模板参数推导规则(右值引用参数部分):当函数模板的模板参数为T而
2011-10-07 14:48:33
63997
24
原创 ReactiveX 学习笔记(35)使用 RxDart + RxCommand 进行 GUI 编程
课题程序界面由3个文本编辑框和1个文本标签组成。要求文本标签实时显示3个文本编辑框所输入的数字之和。文本编辑框输入的不是合法数字时,将其值视为0。3个文本编辑框的初值分别为1,2,3。创建工程Flutter 安装完毕之后执行以下命令创建工程flutter create rx_example打开 Android Studio,File / Open…选择 rx_example 文件夹以打开 Flutter 工程。...
2021-04-03 05:31:56
802
1
原创 趣味编程:FizzBuzz(Swift版)
func toFizzBuzzExpr(n: Int) -> String { return n % 3 == 0 && n % 5 == 0 ? "FizzBuzz" : n % 3 == 0 ? "Fizz" : n % 5 == 0 ? "Buzz" : String(n);}func toFizzBuzzIf...
2018-07-24 22:23:49
643
原创 C++17尝鲜:变长 using 声明
using 声明先来看 using 声明在类中的应用:代码1#include <iostream>using namespace std;struct A { void f(int) {cout << "A::f(int)" << endl;}};struct S : A {};int main(){ S s...
2018-07-24 22:10:12
1360
1
原创 C++17尝鲜:编译期 if 语句
Constexpr If(编译期 if 语句)以 if constexpr 打头的 if 语句被称为 Constexpr If。 Constexpr If 是C++17所引入的新的语法特性。它为C++语言提供了在编译期处理条件分歧的功能。 运行期 if 语句 预处理 if 语句 编译期 if 语句 if (condition) { statement;} el...
2018-07-24 22:09:28
2326
1
原创 C++17尝鲜:variant
variantvariant 是 C++17 所提供的变体类型。variant<X, Y, Z> 是可存放 X, Y, Z 这三种类型数据的变体类型。与C语言中传统的 union 类型相同的是,variant 也是联合(union)类型。即 variant 可以存放多种类型的数据,但任何时刻最多只能存放其中一种类型的数据。与C语言中传统的 union 类型所不同的是,var...
2018-07-24 22:08:39
12969
2
原创 C++17尝鲜:string_view
string_viewstring_view 是C++17所提供的用于处理只读字符串的轻量对象。这里后缀 view 的意思是只读的视图。通过调用 string_view 构造器可将字符串转换为 string_view 对象。 string 可隐式转换为 string_view。string_view 是只读的轻量对象,它对所指向的字符串没有所有权。string_view通常用于函数...
2018-07-24 22:07:51
5106
3
原创 Haskell语言学习笔记(80)req
reqreq 是一个好用,类型安全,可扩展,上层的HTTP客户端的库。$ cabal install reqInstalled req-1.1.0Prelude> :m +Network.HTTP.ReqPrelude Network.HTTP.Req> 官方示例{-# LANGUAGE OverloadedStrings, DeriveGeneric...
2018-07-16 20:03:41
383
原创 Haskell语言学习笔记(79)lambda演算
lambda演算根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义、函数如何被应用以及递归的形式系统。lambda项lambda演算由 lambda 项的语言构成。基本的 lambda 项只包含以下三种: 语法 名称 描述 Haskell语言中的...
2018-07-16 20:03:16
1814
原创 Haskell语言学习笔记(78)fix
fix 函数fix 是一个在 Data.Function 模块中定义的函数,它是对于递归的封装,可以用于定义不动点函数。fix :: (a -> a) -> afix f = let x = f x in xfix 函数的定义使用了递归绑定,比较难以理解:fix f= let x = f x in x= let x = f x in f x= let x...
2018-07-16 20:02:50
882
原创 Haskell语言学习笔记(77)Lens(6)
ixPrelude Control.Lens> [1,2,3] ^? ix 1Just 2Prelude Control.Lens> [1,2,3] ^?! ix 12Prelude Control.Lens> [1,2,3] & (ix 1) .~ 20[1,20,3]atrelude Control.Lens> import q...
2018-07-16 20:02:18
323
原创 Haskell语言学习笔记(76)Data.Tree
Data.Treedata Tree a = Node { rootLabel :: a, subForest :: Forest a } deriving (Eq, Read, Show)type Forest a = [Tree a]Data.Tree 是一种非空(存在根节点),可以有无限分支,每个节点均可有多路分支的Tree类型。...
2018-07-16 20:01:48
882
原创 Haskell语言学习笔记(75)Conduit
安装 conduit$ cabal install conduitInstalled conduit-1.3.0.3Prelude> import ConduitPrelude Conduit> ConduitConduit 是一个处理流的库。Prelude Conduit> :{Prelude Conduit| print $ runCo...
2018-07-16 20:01:22
355
原创 Haskell语言学习笔记(74)GADT
GADTsGADTs(Generalised Algebraic Data Types,广义代数数据类型)是对代数数据类型的一种扩展。 它允许在定义数据类型时明确指定类型参数的类型并使用模式匹配。--ADTdata Maybe a = Nothing | Just a--GADTdata Maybe a where Nothing :: May...
2018-07-16 20:00:51
780
原创 Haskell语言学习笔记(73)Existentials
Existentials(存在类型)Existentially quantified types(Existentially types,Existentials)是一种将一组类型归为一个类型的方式。 通常在使用 type, newtype, data 定义新类型的时候,出现在右边的类型参数必须出现在左边。 存在类型可以突破此限制。实例{-# LANGUAGE Existe...
2018-07-16 20:00:24
325
原创 Haskell语言学习笔记(72)Free Monad
安装 free 包$ cabal install freeInstalled free-5.0.2Free Monaddata Free f a = Pure a | Free (f (Free f a))instance Functor f => Functor (Free f) where fmap f = go where go (Pure a...
2018-07-16 19:59:56
462
原创 Haskell语言学习笔记(71)Semigroup
Semigroupclass Semigroup a where (<>) :: a -> a -> a sconcat :: NonEmpty a -> a stimes :: Integral b => b -> a -> aclass Semigroup a => Monoid ...
2018-07-16 19:59:21
607
原创 Haskell语言学习笔记(70)NonEmpty
NonEmpty(非空列表)infixr 5 :|data NonEmpty a = a :| [a] deriving (Eq, Ord)instance Functor NonEmpty where fmap f ~(a :| as) = f a :| fmap f as b <$ ~(_ :| as) = b :| (b <$ as)ins...
2018-07-15 10:21:53
359
原创 Haskell语言学习笔记(69)Yesod
YesodYesod 是一个使用 Haskell 语言的 Web 框架。安装 Yesod首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安装失败)$ cabal install yesodInstalled yesod-1.4.5Hello World-- helloworld.hs{-# LA...
2018-07-15 10:21:21
484
原创 Haskell语言学习笔记(68)HDBC
安装 HDBC-Sqlite3$ cabal install HDBC-Sqlite3Installed HDBC-sqlite3-2.3.3.1Prelude> :m Database.HDBC Database.HDBC.Sqlite3Prelude Database.HDBC Database.HDBC.Sqlite3>DB 操作Prelude Da...
2018-07-15 10:20:45
490
原创 Haskell语言学习笔记(67)Gtk2Hs
Gtk2Hs$ brew cask install xquartz$ brew install glib cairo gtk gettext fontconfig freetype$ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$ cabal install alex happy$ cabal install gtk2hs-bui...
2018-07-15 10:06:10
419
原创 Haskell语言学习笔记(66)Aeson
Data.Aeson安装 aeson$ cabal install aesonInstalled aeson-1.2.3.0Prelude> :m +Data.AesonPrelude Data.Aeson> Data.Aeson 是一个处理 JSON 数据的库。处理 Person{-# LANGUAGE DeriveGeneric, Overlo...
2018-07-15 10:05:30
319
原创 Haskell语言学习笔记(65)Lens(5)
手动计算 set mapped 5 [1,2,3]set l b = runIdentity . l (\_ -> Identity b)mapped = sets fmapsets f g = taintedDot (f (untaintedDot g))instance Settable Identity where untainted = runIdentity ...
2018-07-15 10:05:01
242
原创 Haskell语言学习笔记(64)Lens(4)
Prisms{-# LANGUAGE TemplateHaskell, RankNTypes #-}import Control.Lensdata NewTask = SimpleTask String | HarderTask String Int | CompoundTask String [NewTask] deriving (Show)makePrism...
2018-07-15 10:01:41
325
原创 Haskell语言学习笔记(63)Dicidable
Dicidableclass Divisible f => Decidable f where lose :: (a -> Void) -> f a choose :: (a -> Either b c) -> f b -> f c -> f alost :: Decidable f => f Voidlost = lose i...
2018-07-15 09:59:47
193
原创 Haskell语言学习笔记(62)Divisible
Divisibleclass Contravariant f => Divisible f where divide :: (a -> (b, c)) -> f b -> f c -> f a conquer :: f adivided :: Divisible f => f a -> f b -> f (a, b)divi...
2018-07-15 09:59:09
299
原创 Haskell语言学习笔记(61)Distributive
Distributiveclass Functor g => Distributive g where distribute :: Functor f => f (g a) -> g (f a) distribute = collect id collect :: Functor f => (a -> g b) -> f a -...
2018-07-15 09:58:25
212
原创 Haskell语言学习笔记(60)Biapplicative
Biapplicativeclass Bifunctor p => Biapplicative p where bipure :: a -> b -> p a b (<<*>>) :: p (a -> b) (c -> d) -> p a c -> p b d (*>>) :: p a b -&g
2018-07-14 21:17:05
178
原创 Haskell语言学习笔记(59)Bitraversable
Bitraversableclass (Bifunctor t, Bifoldable t) => Bitraversable t where bitraverse :: Applicative f => (a -> f c) -> (b -> f d) -> t a b -> f (t c d) bitraverse f g = bise...
2018-07-14 21:16:32
290
原创 Haskell语言学习笔记(58)Bifoldable
Bifoldableclass Bifoldable p where bifold :: Monoid m => p m m -> m bifold = bifoldMap id id bifoldMap :: Monoid m => (a -> m) -> (b -> m) -> p a b -> m bifoldMap ...
2018-07-14 21:16:00
280
原创 Haskell语言学习笔记(57)Parsec(4)
Parser 类型data ParsecT s u m atype Parsec s u = ParsecT s u Identitytype Parser = Parsec String ()data ParsecT s u m a ParsecT 带四个类型参数:数据流类型 s,用户状态类型 u,底层Monad类型 m,返回类型 a。 ParsecT 是一个Monad转...
2018-07-14 21:15:27
454
原创 Haskell语言学习笔记(56)Lens(3)
手动计算(view, over, set, to, _1)view l = getConst . l Constover l f = runIdentity . l (Identity . f)set l b = runIdentity . l (\_ -> Identity b)to k = dimap k (contramap k)instance Field1 ...
2018-07-14 21:14:48
249
原创 Haskell语言学习笔记(55)Data.Vector
Data.VectorConstructionPrelude V> import Data.Vector as VPrelude V> V.empty[]Prelude V> V.singleton 1[1]Prelude V> V.replicate 5 1[1,1,1,1,1]Prelude V> generate 5 (+1)[1...
2018-07-14 20:56:46
465
原创 Haskell语言学习笔记(54)Data.Set
Data.SetConstructionPrelude> import Data.Set as SPrelude S> emptyfromList []Prelude S> singleton 5fromList [5]Prelude S> insert 3 $ fromList [4,5]fromList [3,4,5]Prelude S> delete 5 $ fromList [
2017-12-14 22:36:38
658
原创 Haskell语言学习笔记(53)Data.Sequence
Data.SequenceConstructionPrelude Data.Sequence> emptyfromList []Prelude Data.Sequence> singleton 3fromList [3]Prelude Data.Sequence> 3 <| fromList [4,5]fromList [3,4,5]Prelude Data.Sequence> from
2017-12-14 22:35:55
589
原创 正则表达式(Java,C#,C++)
课题使用正则表达式匹配字符串 使用正则表达式 “\d{3}-(\d{4})-\d{2}” 匹配字符串 “123-4567-89” 返回匹配结果:’”123-4567-89” 以及 “4567”使用正则表达式替换字符串 使用正则表达式 “\d+” 匹配字符串 “123-4567-89” 将匹配结果即三个数字串全部翻转过来,返回结果 “321-7654-98”。使用正则表达式分割字符串
2017-12-01 19:55:36
734
原创 Haskell语言学习笔记(52)正则表达式
Text.Regex.PCRE.Heavy$ brew install pcre$ cabal install pcre-heavyInstalled pcre-heavy-1.0.0.2Prelude> :m +Text.Regex.PCRE.HeavyPrelude Text.Regex.PCRE.Heavy> Prelude Text.Regex.PCRE.Heavy> :set -X
2017-12-01 19:54:50
966
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人