我一直试图在Haskell参考中找到这个的用法:
getHomeR = defaultLayout $ do
setTitle "My Awesome Site"
$(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)
特别:
$(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)
我知道$运算符优先于它的右边,但是我无法理解$()的用法.任何人?
我需要比较给定列表的所有元素是否唯一.(为了记录,我这样做是出于学术目的.)
这是我到目前为止:
allDifferent :: (Eq a) => [a] -> Bool
allDifferent list = case list of
[] -> True
(x:xs) -> if x `elem` xs then False else allDifferent xs
Run Code Online (Sandbox Code Playgroud)
这非常有效!
现在,当我尝试这样做时......
allDifferent2 :: (Eq a) => [a] -> Bool
allDifferent2 list
| null list = True
| (head list) `elem` (tail list) || allDifferent2 (tail list) = False
| otherwise
Run Code Online (Sandbox Code Playgroud)
它只是没有按预期工作.我从GHCi得到以下输出:
*Main> allDifferent2 [1..4]
False
*Main> allDifferent2 [1..5]
True
*Main> allDifferent2 [1..6]
False
*Main> allDifferent2 [1..7]
True
Run Code Online (Sandbox Code Playgroud)
即对于具有偶数元素的每个列表,它输出False,对于奇数量的元素,输出True.
我错过了什么?有人会照顾一些光吗?
我试图在Haskell中实现一个非常简单的排序算法.它编译但不断给我不正确的输出.
这是代码
import Data.List
minimum' :: (Ord a) => [a] -> a
minimum' (x:xs) = foldr (\ x y -> if x <= y then x else y) x xs
qsrt :: (Ord a) => [a] -> [a]
qsrt [] = []
qsrt l@(x:xs) = minimum' l : qsrt xs
Run Code Online (Sandbox Code Playgroud)
有什么想法吗?
我试图在Julia中进行一些矩阵乘法,以便将其与numpy进行对比.
我的Julia代码如下:
function myFunc()
A = randn(10000, 10000)
B = randn(10000, 10000)
return A*B
end
myFunc()
Run Code Online (Sandbox Code Playgroud)
而python版本是:
A = np.random.rand(10000,10000)
B = np.random.rand(10000,10000)
A*B
Run Code Online (Sandbox Code Playgroud)
Python版本需要不到100毫秒才能执行.Julia版本需要超过13秒!看到他们在引擎盖下使用几乎相同的BLAS技术,似乎是Julia版本的问题?!
我正在尝试使用一个名为 plot 的端点设置一个简单的 actix-web 服务器。它本质上只是消耗一些数据,用 gnuplot 绘制它并返回结果 PNG 的字节。问题是,正如您将在代码中看到的那样,我还没有找到一种方法可以在内存中完成所有这些操作,这意味着我必须将文件持久保存到磁盘,将其重新打开到阅读器中,然后将响应发回。根据并发级别,我将开始获取{ code: 24, kind: Other, message: "Too many open files" }消息。
有谁知道我将如何做到这一点,以便整个过程在内存中完成?我在用:
actix-web = "3"
gnuplot = "0.0.37"
image = "0.23.12"
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激,这是代码:
use actix_web::{post, web, App, HttpResponse, HttpServer, Responder};
use gnuplot::{AxesCommon, Color, Figure, LineWidth};
use image::io::Reader;
use rand::distributions::Alphanumeric;
use rand::{thread_rng, Rng};
use std::any::type_name;
use std::collections::HashMap;
use std::fs;
#[post("/")]
async fn plot(req_body: web::Json<HashMap<String, Vec<f64>>>) -> impl Responder {
let data = req_body.get("data").unwrap();
let mut fg = Figure::new();
let fid: String = …Run Code Online (Sandbox Code Playgroud)