小编Mat*_*ick的帖子

没有参数的Git获取和拉取

我有一个名为git branch的签出foo.

> git status
# On branch foo
nothing to commit (working directory clean)
Run Code Online (Sandbox Code Playgroud)

它最初使用此命令检出:

> git checkout origin/foo -b foo --track
Run Code Online (Sandbox Code Playgroud)

我想从远程存储库获取此分支的更新.我知道这些命令中的任何一个都足够了:

> git fetch origin foo # ignore the lack of merging
> git pull origin foo
Run Code Online (Sandbox Code Playgroud)

如果我省略了fetchor 的参数pull,git默认会获取(或拉动)我当前检出的分支?也就是说,以下两对命令是否等效?

> git checkout foo
> git pull
Run Code Online (Sandbox Code Playgroud)

> git checkout foo
> git pull origin foo
Run Code Online (Sandbox Code Playgroud)

git git-pull git-fetch

16
推荐指数
2
解决办法
9100
查看次数

使用Java对象作为Clojure映射

我有一个我想在Clojure中使用的Java类.但是,我想将它用作Clojure地图.这样做的步骤是什么?

我查看了代码IPersistentMap- 如果Java类实现了吗?或者是否应该有一些实现协议的Clojure代码?

我知道我可以编写一些映射代码,将代码从Java对象显式转换为映射,但该解决方案具有很高的努力/回报率.此外,我可能会多次遇到同样的情况.


具体示例:我有一个用Java编写的解析器.我想使用它来解析一些文本,然后访问解析数据结构的内容,就像它在Clojure映射中一样:

(def parser (new MyParser))

(let [parse-tree (parser ... parse some text ...)]
  ((parse-tree :items) "itemid"))
Run Code Online (Sandbox Code Playgroud)

java clojure clojure-java-interop

16
推荐指数
2
解决办法
3428
查看次数

这个功能或模式有名称吗?

而不是fmap将函数应用于函数值:

fmap :: Functor f => (a -> b) -> f a -> f b
Run Code Online (Sandbox Code Playgroud)

我需要一个函数,其中函子有一个函数,值很简单:

thing :: Functor f => f (a -> b) -> a -> f b
Run Code Online (Sandbox Code Playgroud)

但我找不到一个.

这个模式叫做什么,我将函数函数(或者在应用程序中,或者在monad中)应用于普通值?

我已经实现了它,我只是不太明白我做了什么以及为什么标准库中还没有这样的功能.

haskell function typeclass

16
推荐指数
2
解决办法
474
查看次数

如何在Scheme中获取值的类型?

我想要一个在运行时获取值类型的函数.使用示例:

(get-type a)
Run Code Online (Sandbox Code Playgroud)

其中adefineð是一些任意的计划值.

我该怎么做呢?还是我这个实现自己使用的堆栈COND boolean?,number?等等?

scheme types dynamic

16
推荐指数
4
解决办法
2万
查看次数

为什么绑定会影响我的地图类型?

我在REPL中玩耍,我有一些奇怪的行为:

Clojure 1.4.0
user=> (type {:a 1})
clojure.lang.PersistentArrayMap
user=> (def x {:a 1})
#'user/x
user=> (type x)
clojure.lang.PersistentHashMap
Run Code Online (Sandbox Code Playgroud)

我认为所有小的文字地图都是实例PersistentArrayMap,但显然情况并非如此def.为什么要使用defClojure为我的litte地图选择不同的表示?我知道这可能只是一些奇怪的实现细节,但我很好奇.

language-implementation clojure map

16
推荐指数
1
解决办法
330
查看次数

在UICollectionView中以编程方式选择项目

我有一个UICollectionViewController:

- (NSInteger)collectionView:(UICollectionView *)collectionView 
     numberOfItemsInSection:(NSInteger)section {
    return [self.pageTastes count];
}

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView  
                  cellForItemAtIndexPath:(NSIndexPath *)indexPath {
     CellTasteCollectionView *cell = 
       [collectionView dequeueReusableCellWithReuseIdentifier:@"Cell" 
                                                 forIndexPath:indexPath];
     Taste *taste = [self.pageTastes objectAtIndex:indexPath.item];       
     [[cell imageView] setImage:taste.image];
     [cell setObjectId:taste.objectId];    
     return cell;
}
Run Code Online (Sandbox Code Playgroud)

有用.我有这个viewDidLoad,允许用户选择多个项目:

[self.collectionView setAllowsMultipleSelection:YES];
Run Code Online (Sandbox Code Playgroud)

我想什么都有,就是第一次的CollectionView负荷,某些项目编程选择的基础上,他们objectIdCellTasteCollectionView.

这是我如何做到这一点:

- (void)collectionView:(UICollectionView *)collectionView 
         didSelectItemAtIndexPath:(NSIndexPath *)indexPath{

    Taste *taste = [self.pageTastes objectAtIndex:indexPath.item];
    printf("%s\n", [taste.objectId UTF8String]);
}
Run Code Online (Sandbox Code Playgroud)

当用户点击项目时调用它 - 这不是我想要的:我希望在UICollectionView加载时自动选择项目.

我该怎么做呢?

objective-c ios uicollectionview

16
推荐指数
2
解决办法
3万
查看次数

数据和newtype之间的懒惰/严格

我很难理解为什么这两个片段在所谓的"穷人严格分析"下会产生不同的结果.

第一个示例使用data(假设一个正确的Applicative实例):

data Parser t a = Parser {
        getParser ::  [t] -> Maybe ([t], a) 
    }

> getParser (pure (,) <*> literal ';' <*> undefined ) "abc"
*** Exception: Prelude.undefined
Run Code Online (Sandbox Code Playgroud)

第二个用途newtype.没有其他区别:

newtype Parser t a = Parser {
        getParser ::  [t] -> Maybe ([t], a) 
    }

> getParser (pure (,) <*> literal ';' <*> undefined ) "abc"
Nothing
Run Code Online (Sandbox Code Playgroud)

literal x是一个解析器,如果其参数与第一个标记匹配,则成功使用一个输入标记.所以在这个例子中,它失败了因为;不匹配a.但是,该data示例仍然看到下一个解析器未定义,而newtype示例则没有.

我已经读过这个,这个,而且这个 …

haskell lazy-evaluation algebraic-data-types newtype

16
推荐指数
2
解决办法
579
查看次数

如何对数据对象进行自动数据序列化?

具有某种反射/内省规范的语言的巨大好处之一是可以从各种来源自动构建对象.

例如,在Java中,我可以使用相同的对象来持久化到db(使用Hibernate),序列化为XML(使用JAXB),以及序列化为JSON(json-lib).您可以在Ruby和Python中执行相同的操作,通常也遵循一些简单的Java属性或注释规则.

因此,我不需要很多"域转移对象".我可以专注于我正在工作的领域.

它似乎在像Haskell和Ocaml这样非常严格的FP中,这是不可能的.特别是Haskell.我唯一看到的是进行某种预处理或元编程(ocaml).只是接受你必须从底部向上进行所有转换吗?

换句话说,您必须做很多无聊的工作才能将haskell中的数据类型转换为JSON/XML/DB Row对象,然后再转换回数据对象.

serialization ocaml haskell

15
推荐指数
3
解决办法
6781
查看次数

致力于置换monad变压器堆栈

我发现monad变换器的一个问题是需要lift将操作转换为正确的monad.单lift在这里和那里也不错,但有时也有功能类似如下:

fun = do
  lift a
  lift b
  c
  lift d
  lift e
  f
Run Code Online (Sandbox Code Playgroud)

我希望能够这样编写这个函数:

fun = monadInvert $ do
  a
  b
  lift c
  d
  e
  lift f
Run Code Online (Sandbox Code Playgroud)

这会减少lifts 的数量并使代码更清晰.

问题是:对于monads是monadInvert可能的?应该如何创建这个功能?

加分点:定义它monad m的实例MonadIO.

这个问题的标题提到了排列:实际上,我们如何处理monad变换器堆栈的任意排列?

monads haskell monad-transformers

15
推荐指数
2
解决办法
459
查看次数

"许多功能在很少抽象的基础上运行"原则与OOP相比

Clojure语言的创建者声称 "开放的,大型的函数集在一个开放的,小的,可扩展的抽象集合上运行是算法重用和库互操作性的关键".显然,它与典型的OOP方法相矛盾,在这种方法中,您创建了大量的抽象(类)和一组相对较少的函数.请建议一本书,一本书中的章节,一篇文章或您的个人经历,详细说明这些主题:

  1. 激发OOP中出现的问题的例子以及如何使用"很少抽象的许多函数"来解决这些问题
  2. 如何有效地做MFUFA*设计
  3. 如何重构针对MFUFA的OOP代码
  4. OOP语言的语法如何影响MFUFA

*MFUFA:"很少抽象的功能"

oop functional-programming clojure reusability

15
推荐指数
4
解决办法
1073
查看次数