小编luq*_*qui的帖子

56
推荐指数
5
解决办法
3万
查看次数

如何在惯用的Haskell中实现动态编程算法?

Haskell和其他函数式编程语言是在不维护状态的前提下构建的.我还不熟悉函数式编程的工作原理和概念,所以我想知道是否有可能以FP方式实现DP算法.

可以使用哪些函数式编程结构来做到这一点?

haskell functional-programming dynamic-programming

42
推荐指数
4
解决办法
8806
查看次数

有一个`(a - > b) - > b`等同于'a`?

在纯函数式语言中,您可以对值执行的唯一操作是对其应用函数.

换句话说,如果你想用类型值做任何有趣的事情,a你需要一个带有类型的函数(例如),f :: a -> b然后应用它.如果有人用你(flip apply) a的类型交给你(a -> b) -> b,那是否适合替代a

什么叫做类型的东西(a -> b) -> b?看起来它似乎是一个替身a,我很想把它称为代理,或来自http://www.thesaurus.com/browse/proxy的东西.

haskell functional-programming purely-functional

37
推荐指数
3
解决办法
3651
查看次数

寻求对monad实施的建设性批评

我正在学习monad,这是我的第一个工作(除了琐碎的monad).随意批评其中的一切无情.我对"更惯用"和"更优雅"的回应特别感兴趣.

该monad计算执行的绑定数.

data C a = C {value :: a, count :: Int} deriving (Show)

instance Monad C where
    (>>=) (C x c) f = C (value $ f x) (c + 1)
    return x = C x 0

add :: (Num a) => a -> a -> C a
add x y = return $ x + y

-- Simpler way to do this? foldM is obviously something different.
mysum [x] = return x
mysum (x:xs) = mysum xs …
Run Code Online (Sandbox Code Playgroud)

monads haskell idiomatic

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

不安全的强制和更高效的Agda代码(-ftrust-me-im-agda)

在Agda邮件列表中,Conor McBride问道:

有没有办法像假定的那样掌握行动

   trustFromJust :: Maybe x -> x
Run Code Online (Sandbox Code Playgroud)

如果没有任何东西,它实际上并没有检查Just and Goes Wrong(在Milner的意义上)?

Agda可能会证明Maybe a == Just1 a,并且可以消除sum类型的中间构造函数.

我可以想到使用unsafeCoerce#或unpackClosure#的方法,但其他人是否有想法?

import GHC.Prim

trustFromJust :: Maybe x -> x
trustFromJust x = y
    where Just1 y = unsafeCoerce# x

data Just1 a = Just1 a
Run Code Online (Sandbox Code Playgroud)

虽然这个段错误(单个构造函数类型可以避免一些闭包开销).核心看起来不错:

main2 =
  case (Data.Maybe.Just @ Type.Integer main3)
       `cast`
       (CoUnsafe
         (Data.Maybe.Maybe Type.Integer)
         (Just1 Type.Integer)
               :: Data.Maybe.Maybe Type.Integer
                    ~
                  Just1 Type.Integer)
  of _ { Just1 y_aeb ->
  $wshowsPrec 0 y_aeb ([] @ Char)
Run Code Online (Sandbox Code Playgroud)

compiler-construction haskell agda

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

Vim:如何将所选文本作为vim命令执行

当我编写文档时,我发现自己已经找到了适合该文档的orginization约定,我希望vim能够突出显示该约定.但是制作一个ftplugin太"全局"了,我希望语法着色随文档一起提供,所以如果我把它发送到没有该插件的某个地方,他们仍然可以获得着色.我发现你无法通过模式线进行,因为它只接受选项.

现在我试图找出是否有办法在视觉模式中选择一些文本(或者其他什么,但我使用视觉线模式,所以它会很好)并将它作为一系列vim命令执行.

例如,在一份文件的底部,我有:

vim highlighting:
    syn match Comment "^>.*$"
Run Code Online (Sandbox Code Playgroud)

如何选择该文本并说"繁荣,执行它"而不必重新键入?

vim

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

concatMap做什么?

怎么concatMap办?我知道做什么concatmap做什么.它们只是放在一起还是完全不同的功能?

haskell

24
推荐指数
3
解决办法
2万
查看次数

访问被阻止:<项目>尚未完成 Google 验证过程

我正在构建一个简单的脚本,它会轮询一些数据,然后更新我提供给客户的电子表格。(这是一个小项目,我不需要任何花哨的东西。)

因此,我创建了一个 Google Cloud 项目,启用了 Sheets API,并获得了桌面应用程序的凭据。当我尝试运行快速入门示例时,出现错误:

访问被阻止:<我的项目名称>尚未完成 Google 验证过程

我尝试过谷歌搜索,所有的解决方案似乎都是针对用户看到这个应该做什么,但我是开发人员。我只需要授予我自己对此电子表格的访问权限,因为我的脚本是唯一会更改它的东西(我还将与客户共享它)。

我该怎么办?

python google-cloud-platform google-sheets-api

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

将Char转换为Int

我想知道如何将Char转换为Int.例如

a = '\x2' -- a == 2
          -- type of a should be Char
b = charToInt a -- b == 2
                -- type of b should be Int
Run Code Online (Sandbox Code Playgroud)

但我不知道如何:/

提前致谢

int haskell char

21
推荐指数
2
解决办法
3万
查看次数

本地数据声明/实例的提案

我很好奇,并且无法在Haskell中找到类似这样的建议.考虑一下是否sort写过但没有sortBy.

sortBy :: forall a. (a -> a -> Ordering) -> [a] -> [a]
sortBy f = map getX . sort . map X
    where
    newtype X = X { getX :: a }
    instance Ord X where
        compare (X a) (X b) = f a b
Run Code Online (Sandbox Code Playgroud)

有没有人见过这个提案?

haskell local typeclass

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