小编Chr*_*ris的帖子

条件的替代品

当我看到" 工具包里有什么东西?" 时,我正在思考Rich Hickey的简单轻松谈话.滑动.复杂性和简单性之间有一系列对比,这引起了我的兴趣:

复杂性:条件,简单:规则

有没有人对Rich在这里提出什么样的东西有所了解?

conditional rules

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

自制软件 - "brew install freetds"导致:"配置错误:C编译器无法创建可执行文件"

我正在使用Xcode版本4.6.2.我想brew install freetds,但我遇到了一些麻烦.

我读了这个问题,但仍无法解决我的错误.

首先,这是错误:

$ brew install freetds
==> Downloading http://mirrors.ibiblio.org/freetds/stable/freetds-0.91.tar.gz
Already downloaded: /Library/Caches/Homebrew/freetds-0.91.tar.gz
==> ./configure --prefix=/usr/local/Cellar/freetds/0.91 --with-openssl=/usr/bin --with-tdsver=7.1 --mandir=/usr/local/Cellar/freetds/0.91/share/man
checking for gcc... cc
checking whether the C compiler works... no
configure: error: in `/private/tmp/freetds-prGt/freetds-0.91':
configure: error: C compiler cannot create executables
See `config.log' for more details.
Run Code Online (Sandbox Code Playgroud)

我将介绍一些系统信息.

$ brew update
Already up-to-date.

$ brew doctor
Your system is ready to brew.

$ which gcc
/usr/bin/gcc

$ which cc
/usr/bin/cc

$ gcc --version
gcc (GCC) …
Run Code Online (Sandbox Code Playgroud)

xcode homebrew gcc

6
推荐指数
0
解决办法
1887
查看次数

如何将 Nginx GET 请求重写为 POST?

我的用例是我有一封包含“验证您的电子邮件地址”链接的电子邮件。当用户单击此链接时,用户代理会执行 GET 请求,如下所示:

GET http://widgetwerkz.example.com/confirm_email?challenge=LSXGMRUQMEBO
Run Code Online (Sandbox Code Playgroud)

服务器将作为 POST 执行此操作(因为它是一个副作用操作)。我根本无权访问服务器代码。目标请求应该是:

POST http://widgetwerkz.example.com/rpc/verify

{ "challenge": "LSXGMRUQMEBO" }
Run Code Online (Sandbox Code Playgroud)

我可以执行什么 Nginx 重写来实现此目的?

编辑:上下文中的解决方案

http {
    server {
        # ... 
        location /confirm_email {
            set $temp $arg_challenge;
            proxy_method POST;
            proxy_set_body '{ "challenge": "$temp" }';
            proxy_pass http://127.0.0.1/rpc/verify;
            set $args '';
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这将所有这些结合在一起:

  • 将请求从 GET 转换为 POST
  • 将位置从 重写/confirm_email/rpc/verify
  • 从请求中删除查询字符串(例如,生成的 url 很简单/rpc/verify,没有?challenge=LSXGMRUQMEBO
  • 添加 JSON 正文:{ "challenge": "LSXGMRUQMEBO" }

感谢伊万让我走上正轨!

nginx postgrest

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

简化Haskell类型签名

我的问题是如何分析处理Haskell类型签名.为了使它具体化,我正在寻找"修复"功能:

fix :: (a -> a) -> a
Run Code Online (Sandbox Code Playgroud)

还有一个小编的功能,我写的做Peano-ish的补充:

add = \rec a b -> if a == 0 then b else rec (a-1) (b+1)
Run Code Online (Sandbox Code Playgroud)

当我检查类型时,我得到了我期望的类型fix add:

fix add :: Integer -> Integer -> Integer
Run Code Online (Sandbox Code Playgroud)

它似乎像我期望的那样工作:

> (fix add) 1 1
2
Run Code Online (Sandbox Code Playgroud)

如何使用类型签名fix以及add显示fix add具有上述签名的类型?什么是"代数",如果这是正确的词,使用类型签名的规则?我怎么能"展示我的作品"?

haskell types

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

将列表和矢量一起压缩而不重复遍历

假设我有一个列表和一个向量,我想将它们压缩在一起.一个简单的解决方案是将矢量转换为列表,并将两个列表压缩在一起.但是,这需要对向量进行两次遍历(以及内存分配以将其转换为列表) - 一个用于将向量转换为列表,另一个用于将其与另一个列表一起压缩.

有没有办法在一次遍历中将两者拼接在一起?我想这将需要某种状态保持拉链(我猜它将保持矢量索引的状态,因为它可以在O(1)时间索引).

伪代码:

let l1 = [1..10] :: [CInt]
let v1 = Data.Vector.Storable.fromList l1

map (\(x,y) -> x + y) (zipListVector l1 v1) -- zipListVector function is what I am after
Run Code Online (Sandbox Code Playgroud)

haskell list vector

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

标签 统计

haskell ×2

conditional ×1

gcc ×1

homebrew ×1

list ×1

nginx ×1

postgrest ×1

rules ×1

types ×1

vector ×1

xcode ×1