最近,我正在读一些有关Haskell的函数式编程书籍。
例如,Haskell似乎很喜欢“模块化程序”,
f :: (Integer,Integer) -> Integer
f = sum . map sq . filter . odd . between
即使相同的函数可以编写成
f' (m, n) = go m
where go m | m > n = 0
| otherwise = go (m + 1) + if odd m then sq m else 0
“融合定律”也很受欢迎和使用()
我不是OCaml专家,但如果可能的话,我会使用
我开始学习一个国家的Monad,有一个想法困扰着我。与其将累加器作为参数传递,我们还可以将所有内容封装到状态monad。
因此,我想比较使用State与传递它作为参数之间的性能。
所以我创建了两个函数:
sum1 :: Int -> [Int] -> Int
sum1 x [] = x
sum1 x (y:xs) = sum1 (x + y) xs
和
sumState:: [Int] -> Int
sumState xs = execState (traverse f xs) 0
where f n = modify (n+)
我在输入数组1..100000000
使用Server 2008在(AWS)上构建应用程序,并且没有企业版的预算。这是一个标准的web应用程序,在性能方面没有什么特别之处。
我建议同步数据库镜像,主服务器位于一个可用性区域( AZ ),镜像位于第二个AZ中。我的同事(DBA & Data )正在否决这个建议,他们说他们从来不喜欢使用同步镜像,因为同步镜像会增加延迟和缓慢的性能(比如两阶段提交)。他们愿意处理日志传送的权衡,以避免这种潜在的性能损失。
对此有什么想法吗?同步镜像的性能风险真的那么糟糕吗?
对于我的应用程序,我能够仅使用预定义的操作创建一个新函数。在这种情况下,是否需要定义新的操作?
我的函数的伪代码是:
z1 = myGauss(arg, arg2)
def myGauss(arg, arg2):
# Here I only used defined tensorflow operations