如何检查布尔列表是否包含True?
例如
[True,False] = True
[False,False] = False
[False,False,True] = True
Run Code Online (Sandbox Code Playgroud) 我编写了一些代码,用于使用梯形规则以数字方式集成函数.它有效,但它产生的答案有一个错误的标志.为什么会这样?
代码是:
integration :: (Double -> Double) -> Double -> Double -> Double
integration f a b = h * (f a + f b + partial_sum)
where
h = (b - a) / 1000
most_parts = map f (points (1000-1) h)
partial_sum = sum most_parts
points :: Double -> Double -> [Double]
points x1 x2
| x1 <= 0 = []
| otherwise = (x1*x2) : points (x1-1) x2
Run Code Online (Sandbox Code Playgroud)
代码可能不够优雅,但我只是Haskell的学生,并希望首先处理当前的问题,然后编码风格很重要.
在不阻塞的情况下写入标准输入和从子进程的标准输出读取的最佳方法是什么?
通过创建子流程,通过该子流程System.IO.createProcess返回用于写入和读取子流程的句柄。书写和阅读以文本格式完成。
例如,我做非阻塞读取的最佳尝试是timeout 1 $ hGetLine out返回a Just "some line"或Nothing如果不存在要读取的行。但是,对我来说这似乎是一个hack,因此我正在寻找一种更“标准”的方式。
谢谢
我最近了解到我可以在Haskell中执行以下操作:
{-# LANGUAGE DeriveDataTypeable #-}
import Data.Data
data MyRecord = MyRecord
{ field1 :: Int
, field2 :: String
, field3 :: String
} deriving (Show,Eq,Data,Typeable)
main = print $ constrFields (toConstr (MyRecord 5 "Hello" "World"))
Run Code Online (Sandbox Code Playgroud)
这将给我以下内容:
["field1","field2","field3"]
Run Code Online (Sandbox Code Playgroud)
如何对记录中的值执行相同的操作,如下所示:
["5","Hello","World"]
Run Code Online (Sandbox Code Playgroud)
我问,因为我正在使用Aeson像这样的简单JSON:
{
"field1":5,
"field2":"Hello",
"field3":"World"
}
Run Code Online (Sandbox Code Playgroud)
并生成如下的Haskell代码:
field1 :: Int
field1 = 5
field2 :: String
field2 = "Hello"
field3 :: String
field3 = "World"
Run Code Online (Sandbox Code Playgroud)
我怎样才能解开给定记录中的所有值,就像我可以解开记录的字段名称一样?
我无法找到一个简单的例子(对不起我的谷歌技能)在哈斯克尔现场展示了如何使用该Data.Time功能来转换格式String到UTCTime,然后能够从加/减分/秒和转换回UTCTime至格式String。
我要寻找一个例子,说明如何转换String(例如像"10:20:30"到UTCTime,然后加1000秒,那个时候,怎么办使用此哈斯克尔Data.Time库,而完全不使用IO?
函数的类型应为FormatTime -> String -> UTCTime。
该函数应使用TimeLocale或FormatTime需要区域设置/格式。
库中有太多的函数,而且类型太多,以至于令人困惑。readTime,TimeLocale,ParseTime t,NominalDiffTime,Time,什么不是。
请不要仅指向Haskell网站上的文档。大多数文档都只是源代码中的类型签名转储,几乎没有任何示例。抱歉,这很糟糕,但是我花了很多时间试图从那些文档中找出一些东西。
将此与Python文档进行比较。这么多美丽的例子。谢天谢地,有。
我使用kubeadm初始化k8s集群主机,但我感到非常困惑.kubeadm的版本:
# ./kubeadm version
kubeadm version: version.Info{Major:"1", Minor:"5", GitVersion:"v1.5.1", GitCommit:"82450d03cb057bab0950214ef122b67c83fb11df", GitTreeState:"clean", BuildDate:"2016-12-14T00:52:01Z", GoVersion:"go1.7.4", Compiler:"gc", Platform:"linux/amd64"}
Run Code Online (Sandbox Code Playgroud)
当我运行命令时kubeadm init,告诉我必须启动kubelet.service:
# ./kubeadm init
Running pre-flight checks
preflight check errors:
kubelet service is not active, please run 'systemctl start kubelet.service'
Run Code Online (Sandbox Code Playgroud)
然后当我重试这个命令后systemctl restart kubelet.service,告诉我Port 10250 in use:
# systemctl restart kubelet.service
# ./kubeadm init
Running pre-flight checks
preflight check errors:
Port 10250 is in use
/var/lib/kubelet is not empty
Run Code Online (Sandbox Code Playgroud)
有没有办法在没有端口的情况下运行kubelet或者我可以更改kubelet的端口吗?
我是 Haskell 的新手,老实说,我遇到了困难。但它扩展了我的想法,所以我们走了。我正在尝试运行一个非常简单的 Web 服务器,它查询 Postgres 数据库并应将结果作为 JSON 返回。
查询非常简单:“Select id,data from MYTABLE where id = 1”
但是 haskell 的类型系统现在正在杀死我,我的行为的最终类型不匹配。我使用Spock和PostgreSQL-Simple作为组合。
大多数教程对于我想要做的事情来说要么很简单,要么很困难。我介于两者之间,错过了很多对 Haskell 的理解,我之前的很多问题我已经通过简单的复制和粘贴解决了,并且得到了一个简单的版本。
但是一旦我尝试传递路由变量,我就会失败。这是我的工作版本。我的数据库表在这里称为“信封”,重要的调用是它说get "json":
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE FlexibleInstances #-}
module Main where
import Web.Spock
import Web.Spock.Config
import Database.PostgreSQL.Simple
import Data.Pool
import Data.Aeson (ToJSON(toJSON), object, (.=),Value)
import Database.PostgreSQL.Simple.FromRow
type AppAction a = SpockActionCtx () Connection AppSession AppState a
data AppState = EmptyState
data AppSession = EmptySession
data Envelope = Envelope { …Run Code Online (Sandbox Code Playgroud) 如何获取目录中的目录列表?
我想出了下面的内容,但我希望有更优雅的方式:
import System.Directory
import qualified Filesystem.Path as FsP
import Filesystem.Path.CurrentOS
import Control.Monad
getDirectories :: Prelude.FilePath -> IO [Prelude.FilePath]
getDirectories x = do
listDirectory x
>>= (return . fmap decodeString)
>>= return . fmap (FsP.append (decodeString x))
>>= (return . fmap encodeString)
>>= filterM doesDirectoryExist
Run Code Online (Sandbox Code Playgroud) 尝试删除ACL会导致:引用的实体不为空.
如何删除此WAF?
根据这个:http://docs.aws.amazon.com/waf/latest/developerguide/web-acl-working-with.html#web-acl-deleting,我需要从ACL中删除规则.
我已按照说明使用 Terraform 在 AWS 中创建 EKS 集群。
https://www.terraform.io/docs/providers/aws/guides/eks-getting-started.html
我还将连接到集群的输出复制到 ~/.kube/config-eks。我已经验证这成功地工作,因为我已经能够连接到集群并手动部署容器。但是,现在我正在尝试使用 Terraform Kubernetes 提供程序连接到集群,但似乎无法正确配置提供程序。
我已经将提供程序配置为使用我的 kubectl 配置,但是在尝试推送一个简单的 configmap 时,我收到一条错误消息,指出以下内容:
禁止配置映射:用户“system:anonymous”无法在命名空间“kube-system”中创建配置映射
我知道提供商正在获取部分配置,但我似乎无法对其进行身份验证。我怀疑这是因为 EKS 使用 heptio 进行身份验证,我不确定 Terraform 使用的 K8s Go 客户端是否支持 heptio。然而,考虑到在 EKS 进入 GA 时 Terraform 发布了他们的 AWS EKS 支持,我怀疑他们不会更新他们的 Terraform 提供商以使用它。
现在甚至可以这样做吗?有替代品吗?
haskell ×7
kubernetes ×2
amazon-eks ×1
generics ×1
json ×1
kubeadm ×1
parsing ×1
postgresql ×1
record ×1
terraform ×1
time ×1