在#haskell@freenode中使用lambdabot

IRC可不只是闲聊的地方,她是你随时可用的好工具。IRC中有很多Bot可以随时为你服务。这里只收集了在#haskell@freenode中使用的lambdabot。(为了不影响别人,你最好发私信: /msg lambdabot ...)

查hoogle:

ERC> @hoogle applicative

<lambdabot> Control.Applicative class Functor f => Applicative f
<lambdabot> Control.Applicative module Control.Applicative
<lambdabot> package applicative-extras


查类型:

ERC> @type (<*>)

<lambdabot> Applicative f => f (a -> b) -> f a -> f b


运算:

ERC> > map ((&&) <$> (>3) <*> (<5)) [1..9]

<lambdabot> [False,False,False,True,False,False,False,False,False]


ERC> @let a...b = [a..b]
<lambdabot> Defined.
> 1...20
<lambdabot> [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]


大家知道do是语法糖,可用@undo还原:

ERC> @undo do { Just y <- x; z }

<lambdabot> x >>= \ a -> case a of { Just y -> z; _ -> fail ""}


查实例:

@instances Monad
<lambdabot> ArrowMonad a, ContT r m, ErrorT e m, IO, Maybe, RWST r w s m,
ReaderT r m, ST s, StateT s m, WriterT w m, []


查源码:

ERC> @src (<$>)

<lambdabot> f <$> a = fmap f a

ERC> @src foldr
<lambdabot> foldr f z [] = z
<lambdabot> foldr f z (x:xs) = f x (foldr f z xs)

ERC> @src foldl
<lambdabot> foldl f z [] = z
<lambdabot> foldl f z (x:xs) = foldl f (f z x) xs

ERC> @src Monad
<lambdabot> class Monad m where
<lambdabot> (>>=) :: forall a b. m a -> (a -> m b) -> m b
<lambdabot> (>>) :: forall a b. m a -> m b -> m b
<lambdabot> return :: a -> m a
<lambdabot> fail :: String -> m a

ERC> @source Data.List
<lambdabot> http://darcs.haskell.org/packages/base/Data/List.hs


看看是否有现成函数:
ERC> @pl fn op g k a = g a `op` k a
<lambdabot> fn = liftM2

fn 其实就是 liftM2 。 liftM2 是专门用来把二元函数提升到 Monad 中去的,而 ((->) a) 正是 Monad 的实例。


Djinn通过type signature构造函数: 

@djinn (a, b) -> c -> (b, c) ==> f (_, a) b = (a, b) 


查一个monad transformer包装的类型:

@unmtl StateT s IO a ==> s -> IO (a, s)


查网址:

ERC> @where lyah
<lambdabot> http://www.learnyouahaskell.com/

ERC> @where rwh
<lambdabot> http://www.realworldhaskell.org/blog/
  http://book.realworldhaskell.org/read/

ERC> @where wikibook
<lambdabot> http://en.wikibooks.org/wiki/Haskell

ERC> @where hackage
<lambdabot> <http://hackage.haskell.org/package/>

ERC> @where hackage-mirror
<lambdabot> remote-repo:
    hdiff.luite.com:http://hdiff.luite.com/packages/archive/

ERC> @where xmonad

<lambdabot> http://xmonad.org/


查软件包:

@hackage repa
<lambdabot> http://hackage.haskell.org/package/repa


查单词:

ERC> @wn applicative

<lambdabot> *** "applicative" wn "WordNet (r) 3.0 (2006)" [13:46]
<lambdabot> applicative
<lambdabot> adj 1: readily applicable or practical [syn: {applicative},
<lambdabot> {applicatory}]


代码转载自:https://pan.quark.cn/s/a4b39357ea24 本文重点阐述了利用 LabVIEW 软件构建的锁相放大器的设计方案及其具体实施流程,并探讨了该设备在声波相位差定位系统中的实际运用情况。 锁相放大器作为一项基础测量技术,其核心功能在于能够精确锁定微弱信号的频率参数并完成相关测量工作。 在采用 LabVIEW 软件开发的锁相放大器系统中,通过计算测量信号与两条参考信号之间的互相关函数,实现对微弱信号的频率锁定,同时输出被测信号的幅值信息。 虚拟仪器技术是一种基于计算机硬件平台的仪器系统,其显著特征在于用户可以根据实际需求自主设计仪器功能,配备虚拟化操作界面,并将测试功能完全由专用软件程序实现。 虚拟仪器系统的基本架构主要由计算机主机、专用软件程序以及硬件接口模块等核心部件构成。 虚拟仪器最突出的优势在于其功能完全取决于软件编程,用户可以根据具体应用场景灵活调整系统功能参数。 在基于 LabVIEW 软件开发的锁相放大器系统中,主要运用 LabVIEW 软件平台完成锁相放大器功能的整体设计。 LabVIEW 作为一个图形化编程环境,能够高效地完成虚拟仪器的开发工作。 借助 LabVIEW 软件,可以快速构建锁相放大器的用户操作界面,并且可以根据实际需求进行灵活调整和功能扩展。 锁相放大器系统的关键构成要素包括测量信号输入通道、参考信号输入通道、频率锁定处理单元以及信号幅值输出单元。 测量信号是系统需要检测的对象,参考信号则用于引导系统完成对测量信号的频率锁定。 频率锁定处理单元负责实现测量信号的锁定功能,信号幅值输出单元则负责输出被测信号的幅值大小。 在锁相放大器的实际实现过程中,系统采用了双路参考信号输入方案来锁定测量信号。 通过分析两路参考信号之间的相...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值