小编z5h*_*z5h的帖子

使用Scheme中的DCG进行解析(不使用Prolog)?

很多Prolog-in-Scheme实施都在那里.例如Kanren,Schelog.

显然,在"AI编程的范例"中,Norvig在Lisp中实现了Prolog-to-Lisp编译器,以便使用Definite Clause Grammars.

但是有更简单的清洁方式吗?也许一些聪明的使用amb来避免实施完整的"Prolog"?在Scheme中进行基于DCG的解析的最简单方法是什么?

scheme parsing prolog dcg

6
推荐指数
1
解决办法
544
查看次数

在Rails中,update_attributes的反转是什么?

在Rails中,反过来是什么update_attributes!

换句话说,什么将记录映射到将重新创建该记录及其所有子记录的属性哈希?

答案并非ActiveRecord.attributes如此,因为它不会递归到子对象中.

澄清您是否有以下内容:

class Foo < ActiveRecord::Base
  has_many :bars
  accepts_nested_attributes_for :bars
end
Run Code Online (Sandbox Code Playgroud)

然后你就可以传递哈希了

{"name" => "a foo", "bars_attributes" => [{"name" => "a bar} ...]}

update_attributes.但目前尚不清楚如何以编程方式为此目的轻松生成此类哈希.

编辑:
正如我在评论中提到的,我可以这样做:
foo.as_json(:include => :bars)

但我想要一个使用accepts_nested_attributes_for :bars声明的解决方案,以避免必须明确包含关联.

ruby activerecord ruby-on-rails

6
推荐指数
1
解决办法
321
查看次数

何时在Scheme中使用(values ...)(define-values ...)

我已经阅读了函数的文档,例如返回和使用多个值的值和定义值.我明白他们做了什么.当你想要使用这样的东西时,我不清楚.

什么时候构建单个值列表并使用单个值列表而不是/不可能?

scheme

5
推荐指数
2
解决办法
2295
查看次数

维基百科对Map Reduce的解释减少了吗?

MongoDB对减少阶段的解释说:

map/reduce引擎可以迭代地调用reduce函数; 因此,这些功能必须是幂等的.

这就是我总是理解减少在一般地图缩减环境中工作的方式.在这里,您可以通过减少每台机器上的值,然后将这些输出发送到另一台减速机来对N台机器的值求和.

维基百科说:

框架为排序顺序中的每个唯一键调用应用程序的Reduce函数一次.Reduce可以迭代与该键关联的值并生成零个或多个输出.

在这里,您需要将所有值(使用相同的键)移动到要求求的同一台机器上.将数据移动到函数似乎与map reduce应该做的相反.

维基百科的描述是否过于具体?或者MongoDB是否打破了map-reduce?(或者我在这里错过了一些?)

mapreduce mongodb

5
推荐指数
1
解决办法
438
查看次数

如何仅显示带注释标签的消息?

git中似乎有一些方法可以显示带注释的标记的消息以及提交详细信息和其他内容git show the_tag,或名称和详细信息git tag -l -n100 the_tag

但是,什么命令显示消息/正文,而没有其他内容呢?

git git-tag

5
推荐指数
1
解决办法
584
查看次数

Rails是否缓存模板?

我假设是的,有些测试指向是的,但是我想找到说明Rails在内存中缓存(未评估)模板的文档。

也就是说,对于任何.erb.sass.jbuilder,等模板Rails会:

  1. 从文件读取模板,仅一次
  2. 需要时从内存中检索模板
  3. 除非将生成的输出缓存,否则每次调用都会将数据应用于模板。

所有模板/缓存搜索和文档似乎都集中在第3点上。开发Rails标志启用/禁用类缓存。但是寻找证明声明#1 /#2的文档似乎是一种幻想。Rails是否每次都重新读取模板文件并依赖于操作系统级别的文件缓存?

templates ruby-on-rails

5
推荐指数
1
解决办法
704
查看次数

ActiveRecord的find_or_create*方法是否存在根本缺陷?

有几种方法:first_or_create_by,find_or_create_by等,其原理是:

  1. 与数据库交谈,试图找到我们想要的东西
  2. 如果我们没有找到它,那就自己动手吧
  3. 将它保存到数据库

显然,这些方法的并发调用可能使两个线程都找不到他们想要的东西,并且在步骤3中,一个人意外地失败.

似乎更好的解决方案是, create_or_find

那是:

  1. 在您的数据库中提前创建合理的唯一性约束.
  2. 如果你想保存它,请保存一些东西
  3. 如果它有效,那很好.
  4. 如果由于RecordNotUnique异常而无法正常工作,它已经存在,非常好,加载它

那么在什么情况下我想使用Rails内置的东西而不是我自己的东西(看似更可靠)create_or_find

ruby activerecord ruby-on-rails

5
推荐指数
1
解决办法
1130
查看次数

在Elm中,我如何检测焦点是否会从一组元素中丢失?

假设我有一个包含许多组件的表单.我想从小组中发现一个焦点.因此,应忽略在同一表单上从1输入到另一个输入的焦点.我怎样才能做到这一点?

events json dom elm

4
推荐指数
1
解决办法
252
查看次数

应用模型何时可以更改?

我想知道应用程序模型何时可能会发生变化.

具体来说,这样的代码是否保证是正确的?

onClick <| UpdateModelVersionMessage (model.version + 1)

也就是说,在呈现UI组件,注册和调度事件之间,是否有其他更新模型以使该UpdateModelVersionMessage值过期?Javascript的并发模型让我相信我很安全.但是Elm正在做或者榆树可能会做一些像批量/重新排序消息的事情吗?

elm

3
推荐指数
1
解决办法
86
查看次数

2
推荐指数
1
解决办法
1629
查看次数

Clojure数据结构遍历/搜索

我希望能够做到这样的事情:

(search data 
  list?
  (fn [x] (and (list? x) (= 4 (first x))))
  (fn [x] (and (set? x) (contains x 3))))
Run Code Online (Sandbox Code Playgroud)

并以递归方式搜索嵌套数据结构data:

  1. 首先是最浅的列表(例如,可能在一组集合中).
  2. 然后在最浅层列表的列表中,第一个元素是谁4.
  3. 然后在那些包含3的最浅集合的列表中.
  4. 最后返回在步骤3中找到的项目列表.

在重新发明轮子之前,有没有一种标准的方法呢?

search traversal clojure data-structures

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

如何最好地做一个SQL左连接null检查all必须为null?

假设我拥有表人员,他拥有许多书籍,涵盖了许多主题.一本书可能还没有分配任何主题.

查询拥有某些书籍的人员很容易,这些书籍没有具有左连接和空检查的主题.例如:

select * from persons p 
  inner join person_book pb on pb.person_id = p.id
  left  join book_subject bs on bs.book_id = person_book.book_id
  where book_subject.book_id is null;
Run Code Online (Sandbox Code Playgroud)

查询仅拥有没有既定主题的书籍的人的最佳方法是什么?

我知道我可以找到有书的人,以及至少有一本有主题的书的人,然后找到差异.但是有直接的方法吗?

(如果它有所不同,这将在MySQL中).

mysql sql

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

jQuery 1.4的新行为是一个糟糕的设计选择吗?

这有点咆哮,但也是一个非常严重的问题.jQuery已经更改了ajax param序列化,如下所示:

jQuery 1.4在jQuery.param中添加了对嵌套param序列化的支持,使用PHP推广的方法,并由Ruby on Rails支持.例如,{foo:["bar","baz"]}将被序列化为"foo [] = bar&foo [] = baz".

你抓到了吗?

你调用你的参数foo.foo[]如果foo的值是一个数组,jQuery现在将它重命名为背后.这是因为一些PHP-ers和Rubyists希望第三方API为它们重命名.

叫我老式的,但当我把东西放到地图上时,用钥匙x,我希望找到价值x.或者至少使用可选覆盖来实现此默认行为.

甚至文档都同意我:

如果value是一个数组,则jQuery使用相同的键序列化多个值,即{foo:["bar1","bar2"]}变为'&foo = bar1&foo = bar2'.

我是否正确地认为这只是来自jQuery团队的错误判断?

jquery api-design

0
推荐指数
1
解决办法
158
查看次数