小编use*_*220的帖子

函数式语言是否使用来自调用者的信息进行类型推断?

考虑函数f1和f2,例如Haskell或ML.假设f2调用f1.类型推断是否仅使用f1可以调用的信息,这相当于只查看f1的定义.或者它也看看f1在f1上进行类型推断时如何调用f1.例如,f2可能在调用f1时传入文字,这会限制f1的参数类型.

types functional-programming type-inference ml

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

在分布式消息队列中实现容错

假设在下图中中间消息队列失败.发件人仍然可以使用其他邮件队列发送邮件.

但是如果消息队列在收到消息后死亡会发生什么.发件人如何知道邮件是否已发送给接收者,以决定是否重新发送不同的邮件队列?

类似的情况如果接收器在消息队列向其发送消息后死亡会发生什么?发件人如何知道接收方是否已满足其预期请求?

在此输入图像描述

distributed fault-tolerance message-queue distributed-system

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

Flash消息如何在Rails中的请求之间持续存在?

我正在关注的教程具有以下代码,其中提到的代码不太正确,因为错误闪存将一个请求的持续时间长于期望的时间,因为render它不算作请求。解决方法是flash.now改用。

但是错误闪存甚至如何可能持久一个额外的请求?考虑到Rails是无状态的,如何存储下一个请求的闪存信息?

class SessionsController < ApplicationController

  def new
  end

  def create
    user = User.find_by_email(params[:session][:email].downcase)
    if user && user.authenticate(params[:session][:password])
      # Sign the user in and redirect to the user's show page.
    else
      flash[:error] = 'Invalid email/password combination' # Not quite right!
      render 'new'
    end
  end

  def destroy
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Little Schemer:length0和mk-length

小计划器在第165页上给出了以下内容,因为函数长度为0.但这是如何工作的?看起来长度lambda被传递给mk-length lambda,它估计长度为lambda,长度为lambda本身作为参数传递.那么,当(length (cdr l))评估底部时,length只是λ本身的长度.但长度lambda有两个参数curry:lengthl.那么怎么(length (cdr l))才有意义呢?

((lambda (mk-length)
   (mk-length mk-length))
 (lambda (length)
   (lambda (l)
     (cond
       ((null? l) 0)
       (else (add1
                (length (cdr l))))))))
Run Code Online (Sandbox Code Playgroud)

scheme the-little-schemer

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

如何解释Haskell中的callCC?

在Scheme中执行从call/cc有效跳转到初始调用/ cc 获得的延续并恢复保存的调用堆栈.

我刚刚开始学习Haskell,我正在试图弄清楚如何理解callCC.这是试图callCC理解Scheme的理解call/cc.执行callCC

callCC f = cont $ \h -> runCont (f (\a -> cont $ \_ -> h a)) h
Run Code Online (Sandbox Code Playgroud)

据我所知,没有提到有关保存或恢复调用堆栈的内容.callCCHaskell的解释是如何熟悉Scheme的call/cc.

编辑:也许如果有人可以将以下内容翻译成Haskell,这将有助于我理解.

(define (f return)
  (return 2)
  3)

(display (f (lambda (x) x))) ; displays 3

(display (call-with-current-continuation f)) ; displays 2
Run Code Online (Sandbox Code Playgroud)

scheme continuations haskell callcc

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

如何发送USR2信号?

我读到升级nginx涉及发送USR2信号等kill -USR2 pid.所以我试过sudo kill -USR2 3049但得到了

$ sudo kill –USR2 3049
kill: failed to parse argument: '–USR2'
Run Code Online (Sandbox Code Playgroud)

linux signals nginx

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

erlang如何将数据序列化到磁盘?

Erlang没有固定大小的整数,如32位或64位大小.什么是库写调用以二进制表示形式表示整数到磁盘?什么是二进制表示?

更一般地说,某些任意数据结构的磁盘二进制表示是什么?

erlang

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

websocket-rails gem和身份验证

在websocket-rails 的wiki上,它使用CanCan gem 进行以下示例.

这怎么办?使用正常的http请求,会发送一个cookie,该cookie具有标识用户的标记,但是使用websockets原始数据并且没有发送cookie,因此服务器如何识别用户使用CanCan gem的用户?

class AuthorizationController < WebsocketRails::BaseController
  def authorize_channels
    # The channel name will be passed inside the message Hash
    channel = Channel.find_by_name message[:channel]
    if can? :subscribe, channel
      accept_channel current_user
    else
      deny_channel {:message => 'authorization failed!'}
    end
  end
end
Run Code Online (Sandbox Code Playgroud)

编辑:

在下面dispatcher创建的时候应该发送一个包含Upgrade: websocketcookie 的http请求.但是在下一行subscribe_private中没有创建websocket连接,因此它不是http请求,并且可能没有自动访问cookie.

// connect to server like normal
var dispatcher = new WebSocketRails('localhost:3000/websocket');

// subscribe to the channel
var private_channel = dispatcher.subscribe_private('channel_name');
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails websocket ruby-on-rails-3 ruby-on-rails-3.2

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

方案中的原子是什么?

我认为'a应该是计划中的一个原子。但是,当我使用在线解释器并评估以下内容时,我会回来#f

(atom? 'a)
Run Code Online (Sandbox Code Playgroud)

scheme

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