Haskell中的Peano自然数data Peano = Zero | Succ Peano被定义为非常奇怪的野兽:除了简单的自然和底值之外,其中还有一个"无限整数" inf = Succ inf.
还有其他Peano类型的居民吗?这个无限号码有名字吗?
我想为我的客户启用事件通知.有许多可能的方式来发送通知:电子邮件,短信,XMPP /其他IM,通过SIP预先录制的语音消息,特定于电话的消息推送服务,REST回调等.
我不想自己开发所有这些传输,因此我需要一个可以为客户管理这些通知的Web服务.此外,我不想存储电子邮件/电话/其他个人身份信息.
通知是交易性的(即它不是向每个人传递相同的消息).欢迎付费解决方案.
有http://pagerduty.com,但确实如此
因此,它给受访者带来了更多的负担,我想要一些用户无需设置就能完成的工作.
Monitis是另一个例子.它有多种传输方式,包括Twitter,但它又是为内部人员设计的,而不是为大量号码的服务订户设计的.
亚马逊SNS似乎太低级别,因为它只管理推送通知的传递,但是为了延迟它们,我必须编写一个我不想要的移动应用程序.
如何最好地向各种IM /通知服务发送通知中描述的XMPP服务器?传统上支持不同传输的想法,但我想要第三方托管服务.
Twilio只有2个传输:短信和语音呼叫,更多的是完全双向通信.
我甚至找不到合适的谷歌关键字来搜索我想要的服务/ SaaS.
问题是,有没有这样的服务?一些样本会让我知道要寻找什么.
我想在CPAN模块上在Windows上创建自己的二进制PPM包.
有PPM::Make哪些做得很好.
但也有CPANPLUS哪些插件可以为发行版创建本机二进制包(例如,.deb或者是Arch Linux .pkg.tar.xzPacman)
是否有CPANPLUS插件来创建PPM?有没有其他方法/前端可以方便地创建PPM?
当前的二进制GHC分布(7.8.2)没有动态基础库(base正确的ghc-prim等).所以不可能使用动态链接.(当然可以生成静态链接的dll).所以旧的解决方案已经过时了.
使用7.8.x在Windows上获得64位动态链接的最简单方法是什么?
如果模块A依赖于模块B并且模块B已升级,则A可能因更改而中断.我的想法是重新测试两者A和B升级后B.
我认为最简单的方法就是重新测试可以重新测试的所有内容:从CPAN下载每个已安装的模块并执行其测试脚本.
有没有办法下载和重新测试?
如果没有办法,是否有任何助手/ API,所以我可以实现这样的工具?
我基本上需要
有没有人知道Haskell中是否有一个函数可以做这样的事情:
"Int" -> Int
"String" -> String
"Bool" -> Bool
Run Code Online (Sandbox Code Playgroud)
即.它采用类型构造函数名称的字符串表示形式,并将其转换为实际类型构造函数,包括表达式和模式.
编辑:我的总体目标是简化:
transExp (Add exp1 exp2) vars
= transExp exp1 vars ++ transExp exp2 vars ++ [IAdd]
transExp (Sub exp1 exp2) vars
= transExp exp1 vars ++ transExp exp2 vars ++ [ISub]
Run Code Online (Sandbox Code Playgroud)
进入单个模式匹配,所以基本上将Add或Sub转换为字符串,在前面添加"I",并将其转换回类型.
我想要一个袋子容器,它隐藏了客户的"真实"订单.
它也必须是完全多态的,不应该对其元素类型有任何约束.
我发现了至少三种袋子的实现:Bag来自ghc包装,Data.Bag来自bag和Math.Combinatorics.Multiset来自的模块multiset-comb.
然而,它们都具有暴露元件内部顺序的操作toList和fold*操作,这可能取决于实现细节或袋构造的顺序.
toList是不可能的,至少是类型Bag a -> [a].但是,折叠并不总是暴露订单.
例如,fold (+) 0不公开.
问题是,我应该如何设计折叠界面?是否有必要和充分的a -> a -> a折叠功能安全条件?由于fmap没有暴露订单,折叠时a -> b -> b是否会失去通用性?
我正在考虑可交换的幺半群 - 它们似乎已经足够了,但我不确定是否有必要使用关联性和身份元素.
为文档代数/ 2.1.1.2/DOC/HTML示出了庞大数量的类型的类.
如何声明有问题的结构必须配备可交换的关联操作和单元/标识元素,但没有其他任何东西(反转,分配等)?
我在想
reduce :: Monoid m => (a -> m) -> [a] -> m
Run Code Online (Sandbox Code Playgroud)
但是Data.Monoid的实例不应该是可交换的,我希望我的函数的用户看到他们需要通过查看类型来使函数工作的可交换性.
我想Foldable.toList使用变形来编写一个非空的玫瑰树,但似乎不可能提取最后一个元素:
import Data.Functor.Foldable
data RoseTree a = RoseNode a [RoseTree a]
ana5 :: RoseTree a -> [a]
ana5 = ana coalg5
coalg5 :: RoseTree a -> ListF a (RoseTree a)
coalg5 (RoseNode a []) = Nil
coalg5 (RoseNode a (RoseNode b1 b2:t)) = Cons a $ RoseNode b1 (b2 ++ t)
Run Code Online (Sandbox Code Playgroud)
它确实是不可能的,它是否适用于所有非空结构?
另外(它是一种可选的奖励问题)是否有一般规则来确定何时Fix f -> Fix g可以使用f-algebras而不是g-coalgebras实现?
Btw apomorphism工作:
coalg6 (RoseNode a []) = Cons a $ Left []
coalg6 (RoseNode a (RoseNode b1 b2:t)) = …Run Code Online (Sandbox Code Playgroud) 我想从 Node.js 对 Haskell 代码进行 RPC 调用。node 和 Haskell 都有哪些库?我只能找到 XML-RPC 和 zeromq,但它们似乎不稳定。