当我看到" 工具包里有什么东西?" 时,我正在思考Rich Hickey的简单轻松谈话.滑动.复杂性和简单性之间有一系列对比,这引起了我的兴趣:
复杂性:条件,简单:规则
有没有人对Rich在这里提出什么样的东西有所了解?
我正在使用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) 我的用例是我有一封包含“验证您的电子邮件地址”链接的电子邮件。当用户单击此链接时,用户代理会执行 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)
这将所有这些结合在一起:
/confirm_email为/rpc/verify/rpc/verify,没有?challenge=LSXGMRUQMEBO){ "challenge": "LSXGMRUQMEBO" }感谢伊万让我走上正轨!
我的问题是如何分析处理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具有上述签名的类型?什么是"代数",如果这是正确的词,使用类型签名的规则?我怎么能"展示我的作品"?
假设我有一个列表和一个向量,我想将它们压缩在一起.一个简单的解决方案是将矢量转换为列表,并将两个列表压缩在一起.但是,这需要对向量进行两次遍历(以及内存分配以将其转换为列表) - 一个用于将向量转换为列表,另一个用于将其与另一个列表一起压缩.
有没有办法在一次遍历中将两者拼接在一起?我想这将需要某种状态保持拉链(我猜它将保持矢量索引的状态,因为它可以在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)