1.C语言字符串 字符串(character string)是一个或多个字符的序列,例如:"Zing went the strings of my heart!" C语言没有专门用于储存字符串的变量类型,字符串都被储存在char类型的数组中.数组由连续的存储单元组成,字符串中的字符被储存在相邻的存储单元中,每个单元储存一个字符.如下图: 注意图4.1中数组末尾位置的字符\0.这是空字符(null character),C语言用它标记字符串的结束.空字符不是数字0,它是非打印字符,其AS…
ExistentialQuantification {-# LANGUAGE ExistentialQuantification #-} 存在类型专用的语言扩展 Haskell语言学习笔记(73)Existentials GADTs {-# LANGUAGE GADTs #-} 广义抽象代数类型专用语言扩展 Haskell语言学习笔记(74)GADTs OverloadedStrings {-# LANGUAGE OverloadedStrings #-} 用于重载字符串字面量类型的语言扩展 H…
String 的格式化 Text.Printf 这个模块用来处理字符串格式化. printf :: PrintfType r => String -> r printf 用于格式化字符串,注意这个函数的返回类型是多态的. Prelude> :m +Text.Printf Prelude Text.Printf> printf "%s, %d, %.4f\n" "hello" 123 pi hello, 123, 3.1416 Prelude…
lambda演算 根据维基百科,lambda演算(英语:lambda calculus,λ-calculus)是一套从数学逻辑中发展,以变量绑定和替换的规则,来研究函数如何抽象化定义.函数如何被应用以及递归的形式系统. lambda项 lambda演算由 lambda 项的语言构成.基本的 lambda 项只包含以下三种: 语法 名称 描述 Haskell语言中的相应表述 a 变量 表示参数或数学/逻辑值的字符或字符串 a (λx.M) 抽象化 函数定义(M是一个lambda项).变量x在表达式…
Yesod Yesod 是一个使用 Haskell 语言的 Web 框架. 安装 Yesod 首先更新 Haskell Platform 到最新版 (Yesod 依赖的库非常多,版本不一致的话很容易安装失败) $ cabal install yesod Installed yesod-1.4.5 Hello World -- helloworld.hs {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE QuasiQuotes #-} {-# LANG…
IORef 一个在IO monad中使用变量的类型. 函数 参数 功能 newIORef 值 新建带初值的引用 readIORef 引用 读取引用的值 writeIORef 引用和值 设置引用的值 modifyIORef 引用以及修改值的函数 修改引用的值 Prelude> :m +Data.IORef Prelude Data.IORef> a <- newIORef 1 Prelude Data.IORef> v <- readIORef a Prelude Data.I…
Category class Category cat where id :: cat a a (.) :: cat b c -> cat a b -> cat a c instance Category (->) where id = GHC.Base.id (.) = (GHC.Base..) (<<<) :: Category cat => cat b c -> cat a b -> cat a c (<<<) = (.) (&…
想在R语言中生成一个图形文件的文件名,前缀是fitbit,后面跟上月份,再加上".jpg",先不百度,试了试其它语言的类似语法,没一个可行的: C#中:"fitbit" + month + ".jpg" VB:"fitbit" & month & ".jpg" Haskell:"fitbit" ++ month ++ ".jpg" 还想到concat之…
Control.Concurrent Prelude> import Control.Concurrent Prelude Control.Concurrent> Control.Concurrent 模块属于标准库,不需要安装. forkIO threadDelay data ThreadId 代表线程句柄的类型. forkIO :: IO () -> IO ThreadId 创建线程返回线程句柄,在新的线程中运行指定的 IO 操作. threadDelay :: Int ->…
安装 free 包 $ cabal install free Installed free-5.0.2 Free Monad data Free f a = Pure a | Free (f (Free f a)) instance Functor f => Functor (Free f) where fmap f = go where go (Pure a) = Pure (f a) go (Free fa) = Free (go <$> fa) instance Functor f…