我对范畴理论的知识不是很好。所以请容忍我。
我一直在读
看到了下面的定义。
class (Category c, Category d) => Functor c d t where
fmap :: c a b -> d (t a) (t b)
我从那个网站上读到,Haskell前奏曲中的函子类型实际上是一个内函子。(上述类别中的C及d类均为Hask)
读完这一页后,我想知道。如果Haskell使用的是实数函子而不仅仅是内函子,它会更适合元编程吗?
假设我们有以下内容( Js代表Javascript)
data Js a where
litInt :: Integer -&
当我尝试运行业力测试运行程序时,我从我的一个文件中得到一个错误,如下所示:我的库google是未定义的?
Chrome 36.0.1985 (Mac OS X 10.9.4) ERROR
Uncaught ReferenceError: google is not defined
at /Users/giowong/rails_project/doctible_pre_treatment/app/assets/javascripts/angular-google-maps.min.js:7
我的karma.conf.js文件
// Karma configura
在阅读了这个主题:和之后,我编写了一个小小的测试来测量开关/用例样式的编码和一个函数数组之间的性能差异。函数调用(F类成员)只使用cpu容量(算术部分):没有系统调用,没有控制台输出等I/O。
最后,这两种方法之间的差异大约是30%的切换方法!好的,函数指针比开关/大小写慢一点。
所以我的问题是:,我的测试在你看来是有效的吗?,还是我引入了任何导致这些难以置信的结果的偏见? 30%!
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Diagnos
在Haskell中,函子类型函子的定义如下(例如,见哈斯克尔维基):
class Functor (f :: * -> *) where
fmap :: (a -> b) -> f a -> f b
据我所知(如果我错了请纠正我),这样的函子只能有一个用类型构造函数(如[]、Maybe等)构造的范畴作为目标范畴。另一方面,人们可能认为函子的任何范畴都是函子的目标,例如所有类型的范畴。例如,Int可以是函子目标类别中的对象,而不仅仅是Maybe Int或[Int]。
Haskell函子受到这种限制的动机是什么?
我们都知道,爱/恨的成分从右到左:
(.) :: (b -> c) -> (a -> b) -> a -> c
自然/左向右组合的“最标准”操作符(如某种公共库)是什么:
(???) :: (a -> b) -> (b -> c) -> a -> c
它概括了值的常识运算符,被看作是来自()的函数:
(&) :: a -> (a -> b) -> b
可以在几个librairies中找到
如果没有的话,有谁能告诉我这个经营者的名字呢?在数学中,自然作文经常被写成";“但是第二好的名字是什么呢?也许
我是C++新手,所以我试图理解为什么下面的代码不能工作:
std::sort(arr, arr + j);
for (int i = 0; i < j; i++) {
cout << arr[i] << "\n";
}
输入I测试:a, u, m
我期望的输出:a, m, u
但仍然是a, u, m。
我假设这是因为我将指向数组的指针放入sort() (代码的那一部分在函数中)?但是我在这里读了很多关于如何排序数组的指针的问题,但是我真的被困住了。请有人用一种简单易懂的方式解释一下,为什么我的代码不能工作,以及如何修复它?
更新
stru
在C++11中,线程对象可以被移动。众所周知,我们创建的每个线程都拥有一个函子。显然,移动一个未执行其函子的线程是合理的。但是,移动一个正在调用或已经执行了一段时间的函数的线程又如何呢?
为了更进一步,如果我实现了一个线程包装类,如:
//noncopyable is a tag class of which copy constructor and copy assignment are deleted.
class Thread:noncopyable{
private:
using ThreadFunc = std::function<void()>;
boo
我有两个简单的例子:
1) xt函数(这是什么?)
Prelude> :t fmap
fmap :: Functor f => (a -> b) -> f a -> f b
Prelude> :{
Prelude| f::Int->Int
Prelude| f x = x
Prelude| :}
Prelude> xt = fmap f // ?
Prelude> :t xt
xt :: Functor f => f Int -> f Int
Prelude> xt (+2) 1
3
2) xq函数(通过组合)
Prelu
我们可以有两种类型的f, g :: * -> *,使它们不是单子,但它们的组成是。例如,对于任意固定的s
f a := s -> a
g a := (s, a)
g a不是monad (除非我们将s限制为单半群),但是f (g a)是状态monad s -> (s, a)。(与函子和应用函子不同,即使f和g都是monads,。)
函子和应用函子有类似的例子吗?也就是说,f和g的组合是函子(或应用函子),尽管
f和g中的一个不是(应用程序)函子,另一个是
它们都不是(应用)函子,
Haskell中有类似于以下类型类的东西吗?
class Mergeable (f :: Type -> Type -> Type) where
merge :: f a b -> f c d -> f (a, c) (Either b d)
特别是,假设在某些值和路由上有一个Site类型的索引:
data Site a r
我们希望“合并”两个站点,例如和都将其数据(值)保存在内存中,同时支持路由的或。
instance Mergeable Site where
merge site1 site2 = ...
还有另一种类型,称为RouteEncoder
在有状态计算中,我会使用相同的镜头作为设置器和getter。GHC似乎无法推导出函子f的一般类型。
import Lens.Family
import Lens.Family.State
import Control.Monad.State
-- | Run computation inside modified state
with :: Functor f => LensLike' f s a -> a -> State s b -> State s b
with lens value comp = do
value' <- use le
我正在把GHC/Arr.hs移植到Frege。
数组定义如下:
data Array i e = Array{u,l::i,n::Int,elems::(JArray e)}
有以下功能:
amap :: (Ix i, ArrayElem e) => (a -> b) -> Array i a -> Array i b
现在,我不知道如何为它定义Functor实例,因为
instance (Ix i) => Functor (Array i) where
fmap = amap
但是编译器抱怨推断的类型比预期的要受更多的约束,这似乎是真的。我能使Array