小编Lui*_*eis的帖子

什么是$()构造?

我一直试图在Haskell参考中找到这个的用法:

getHomeR = defaultLayout $ do
    setTitle "My Awesome Site"
    $(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

特别:

$(widgetFile "home")
Run Code Online (Sandbox Code Playgroud)

我知道$运算符优先于它的右边,但是我无法理解$()的用法.任何人?

haskell syntactic-sugar template-haskell

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

Haskell - 检查所有列表元素是否唯一

我需要比较给定列表的所有元素是否唯一.(为了记录,我这样做是出于学术目的.)

这是我到目前为止:

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.

我错过了什么?有人会照顾一些光吗?

comparison haskell functional-programming list

4
推荐指数
2
解决办法
5021
查看次数

Haskell中的排序算法

我试图在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)

有什么想法吗?

sorting haskell quicksort

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

Julia矩阵乘法比numpy慢

我试图在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版本的问题?!

python numpy blas matrix-multiplication julia

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

Rust Gnuplot - 将 PNG 以字节形式保存在内存中

我正在尝试使用一个名为 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)

gnuplot rust actix-web

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