小编アレッ*_*ックス的帖子

Haskell中的并行性

我正在尝试创建一个执行并行评估的简单示例:

import Control.Parallel.Strategies

main = do
  runEval $ do
    a <- rpar (\x -> x + 5)
    b <- rseq (\x -> x + 15)
    return (a, b)
Run Code Online (Sandbox Code Playgroud)

它说

Couldn't match expected type `IO t0'
                with actual type `(Integer -> Integer, Integer -> Integer)'
Run Code Online (Sandbox Code Playgroud)

我知道,它与Haskell中的并行性无关,但是,我如何在Haskell中构建这样一个简单的例子?

parallel-processing haskell

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

包和项目的命名约定

这里有一个关于这个的讨论,但我仍然对这个话题有疑问.所以,一个简单的问题:Scala项目的命名约定是什么?是"my_new_project","myNewProject","my-new-project","MyNewProject"还是"mynewproject"?和包裹一样的问题.

scala naming-conventions

5
推荐指数
2
解决办法
4631
查看次数

有没有办法找出特定提交中整个文件的样子?

在应用所有更改后,有没有办法找出整个文件在特定提交中的样子?我知道2个文件(添加和删除的内容)之间存在差异,这就是git中显示的内容.但这不是我想要的.

git

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

project/build.sbt和project/BuildApp.scala有什么区别?

project/build.sbt和之间有什么区别project/BuildApp.scala?我可以互换地创建它们吗?

sbt

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

将替换的嵌套模式替换为Monad的"do"

我想简化这段代码

{-# LANGUAGE OverloadedStrings #-}

import Data.Aeson
import Network.HTTP.Types
import Data.Text

getJSON :: String -> IO (Either String Value)
getJSON url = eitherDecode <$> simpleHttp url

--------------------------------------------------------------------
maybeJson <- getJSON "abc.com"
case maybeJson of
  Right jsonValue -> case jsonValue of
      (Object jsonObject) -> 
        case (HashMap.lookup "key123" jsonObject) of
          (Just (String val)) -> Data.Text.IO.putStrLn val
          _ -> error "Couldn't get the key"

      _ -> error "Unexpected JSON"
  Left errorMsg -> error $ "Error in parsing: " ++ errorMsg
Run Code Online (Sandbox Code Playgroud)

通过使用Monad的do语法

maybeJson <- …
Run Code Online (Sandbox Code Playgroud)

haskell

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

在Haskell中从Internet下载大文件

有关于如何在Haskell中下载大文件的任何建议吗?我认为Http.Conduit是这个库是一个很好的库.但是,它是如何解决这个问题的?它的文档中有一个例子,但它不适合下载文件,它只是下载一个文件:

 import Data.Conduit.Binary (sinkFile)
 import Network.HTTP.Conduit
 import qualified Data.Conduit as C

 main :: IO ()
 main = do
      request <- parseUrl "http://google.com/"
      withManager $ \manager -> do
          response <- http request manager
          responseBody response C.$$+- sinkFile "google.html"
Run Code Online (Sandbox Code Playgroud)

我想要的是能够下载文件而不是用完RAM,例如在性能方面做得有效等等.最好能够"继续"下载它们,意思是"现在某个部分,后来的另一个部分" .

我还发现了hackage上download-curl软件包,但我并不认为这是一个很好的选择,甚至可以像我需要的那样通过chunk下载文件块.

networking haskell http-conduit

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

结构中的自定义getter和setter

如何在结构中创建自定义 getter或setter:

struct MyStruct {
  field1: int
}

impl MyStruct {

  //getter
  fn field1(self) -> int {
    // some calculations....
    // return the value...

  }

  //or
  //setter
  fn field1(self, value) {

  }

}
Run Code Online (Sandbox Code Playgroud)

什么是真正的Rust方式呢?

rust

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

更新注册表`https:// example.com /`

正如https://github.com/DaGenix/rust-crypto所说,我将此添加到我的rust-lib项目中:

//Cargo.toml
[dependencies]
rust-crypto = "*"

//lib.rs
extern crate "rust-crypto" as rust_crypto;
Run Code Online (Sandbox Code Playgroud)

得到了这个:

$ cargo build --verbose
    Updating registry `https://example.com/`
Unable to update the package registry

Caused by:
  failed to fetch `https://example.com/`

Caused by:
  [16] hostname does not match certificate
Run Code Online (Sandbox Code Playgroud)

没有"example.com"既不是我的项目,也不是他的lib.

rust

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

结构中的字符串,寿命

我知道这3个结构之间的区别是-一生的寿命 a

struct S1 {
    a: &'static str,
    b: int
}

struct S2<'aa> {
    a: &'aa str,
    b: int
}

struct S3 {
    a: String,
    b: int
}

fn main() {
    let s1 = S1 {a: "123", b: 123};
    let s2 = S2 {a: "123", b: 123};
    let s3 = S2 {a: "123".into_owned(), b: 123};
}
Run Code Online (Sandbox Code Playgroud)

您能告诉我第一种,第二种和第三种的用例吗,换句话说,什么时候最好在第二种和第三种上使用第一种,什么时候在第一种和第三种上使用-第二种,等等?在文档中没有解释。

rust

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

如何创建存根函数?

在Rust中创建存根函数的最佳方法是什么?就像是:

fn my_method() -> bool {
  return new UnImplementedException() //wrong! But that's close to what I need
}
Run Code Online (Sandbox Code Playgroud)

在C#中,方法可以返回UnImplementedException,这对于创建存根很方便.当然,在这种特殊情况下,我可以返回true或false,但我想要适用于任何返回类型的解决方案.

rust

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