我正在尝试创建一个执行并行评估的简单示例:
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中构建这样一个简单的例子?
这里有一个关于这个的讨论,但我仍然对这个话题有疑问.所以,一个简单的问题:Scala项目的命名约定是什么?是"my_new_project","myNewProject","my-new-project","MyNewProject"还是"mynewproject"?和包裹一样的问题.
在应用所有更改后,有没有办法找出整个文件在特定提交中的样子?我知道2个文件(添加和删除的内容)之间存在差异,这就是git中显示的内容.但这不是我想要的.
project/build.sbt
和之间有什么区别project/BuildApp.scala
?我可以互换地创建它们吗?
我想简化这段代码
{-# 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中下载大文件的任何建议吗?我认为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下载文件块.
如何在结构中创建自定义 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方式呢?
正如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.
我知道这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中创建存根函数的最佳方法是什么?就像是:
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,但我想要适用于任何返回类型的解决方案.