小编Hju*_*lle的帖子

如何使用bash中提供的工具生成范围内所有日期的列表?

我想下载一堆用ISO-8601日期命名的文件.使用bash + GNU coreutils有一种简单的方法吗?(或者让wget/curl自动生成列表的一些技巧,但我发现这不太可能)

与此问题类似,但不限于工作日:如何使用bash中提供的工具生成一系列非周末日期?.我想有一种更简单的方法可以在没有这种限制的情况下做到这一点.

还与如何在bash上生成随机数据的日期范围有关,但不限于一年.

bash shell

14
推荐指数
3
解决办法
1万
查看次数

将功能依赖类转换为类型族实例

是否可以从fundep类创建类型族实例?例如,假设我有课

\n\n
class A a b | a -> b\n
Run Code Online (Sandbox Code Playgroud)\n\n

有一些实例(导入外部库)并希望为该类型系列创建所有相应的实例

\n\n
type family A' a :: *\n
Run Code Online (Sandbox Code Playgroud)\n\n

这样A' a ~ biff A a b,无需从外部源手动复制和修改实例。

\n\n

我该怎么做(如果可能的话)?

\n\n
\n\n

迄今为止我最有希望的尝试,

\n\n
class A' a where\n    type A'_b a :: *\n\ninstance forall a b. A a b => A' a where\n    type A'_b a = b\n
Run Code Online (Sandbox Code Playgroud)\n\n

给出错误消息

\n\n
    The RHS of an associated type declaration mentions \xe2\x80\x98b\xe2\x80\x99\n      All such variables must be bound on the …
Run Code Online (Sandbox Code Playgroud)

haskell type-families functional-dependencies

13
推荐指数
1
解决办法
458
查看次数

Haskell相当于C#5 async/await

我刚刚阅读了使用awaitasync关键字在C#5.0中处理异步函数的新方法.从等待C#参考考试:

private async Task SumPageSizesAsync()
{
    // To use the HttpClient type in desktop apps, you must include a using directive and add a 
    // reference for the System.Net.Http namespace.
    HttpClient client = new HttpClient();
    // . . .
    Task<byte[]> getContentsTask = client.GetByteArrayAsync(url);
    byte[] urlContents = await getContentsTask;

    // Equivalently, now that you see how it works, you can write the same thing in a single line.
    //byte[] urlContents = await client.GetByteArrayAsync(url); …
Run Code Online (Sandbox Code Playgroud)

c# haskell asynchronous

11
推荐指数
1
解决办法
2462
查看次数

如何使用“nix search”搜索 Haskell 包?

我知道我可以使用 nix-env 搜索 Haskell 包

nix-env -f '<nixpkgs>' -qaP -A haskellPackages name_of_package
Run Code Online (Sandbox Code Playgroud)

但这很慢而且没有缓存。如果我尝试使用新命令,nix search所有 Haskell 包都被隐藏。

$ nix search aeson
error: no results for the given search term(s)!
Run Code Online (Sandbox Code Playgroud)

是否可以使用新nix search命令搜索 Haskell 包?如果是这样,如何?


编辑:我在这个irc 日志中发现了一些关于这个的讨论,但我不太明白这些建议在实践中的含义。具体这部分:

20:49 <duairc> How do I make nix search include haskellPackages?
20:52 <ottidmes> duairc: you might try and call recurseIntoAttrs on haskellPackages
20:52 <rain1> thanks
20:52 <LnL> rain1: nix-env -f '<nixpkgs>' -qaP -A haskellPackages
20:54 <gchristensen> duairc: ^
20:54 <duairc> …
Run Code Online (Sandbox Code Playgroud)

haskell nix

7
推荐指数
1
解决办法
1399
查看次数

为什么Haskell/unpack搞乱了我的字节?

我已经构建了一个小型的UDP/protobuf发送器和接收器.我花了一个上午的时间试图找出protobuf解码产生错误的原因,结果却发现发送器(Spoke.hs)发送的数据不正确.

用于unpack将Lazy.ByteStrings转换为网络包将发送的字符串的代码.我unpack在Hoogle 找到了.它可能不是我正在寻找的功能,但它的描述看起来合适:"O(n)将ByteString转换为字符串."

Spoke.hs产生以下输出:

chris@gigabyte:~/Dropbox/haskell-workspace/hub/dist/build/spoke$ ./spoke
45
45
["a","8","4a","6f","68","6e","20","44","6f","65","10","d2","9","1a","10","6a","64","6f","65","40","65","78","61","6d","70","6c","65","2e","63","6f","6d","22","c","a","8","35","35","35","2d","34","33","32","31","10","1"]
Run Code Online (Sandbox Code Playgroud)

虽然wireshark告诉我数据包中的数据是:

0a:08:4a:6f:68:6e:20:44:6f:65:10:c3:92:09:1a:10:6a:64:6f:65:40:65:78:61:6d:70:6c:65:2e:63:6f:6d:22:0c:0a:08:35:35:35:2d:34:33:32:31:10
Run Code Online (Sandbox Code Playgroud)

Spoke.hs和Wireshark的长度(45)是相同的.

Wireshark缺少最后一个字节(值0x01),中心值流不同(在Wireshark中大一个字节).

"65","10","d2","9"在Spoke.hs和65:10:c3:92:09Wireshark中.

由于0x10是DLE,它让我感到震惊,可能正在进行一些转义,但我不知道为什么.

我对Wireshark有多年的信任,只有几十个小时的Haskell经验,所以我认为这是错误的代码.

任何建议赞赏.

-- Spoke.hs:

module Main where

import Data.Bits
import Network.Socket -- hiding (send, sendTo, recv, recvFrom)
-- import Network.Socket.ByteString
import Network.BSD
import Data.List
import qualified Data.ByteString.Lazy.Char8 as B
import Text.ProtocolBuffers.Header (defaultValue, uFromString)
import Text.ProtocolBuffers.WireMessage (messageGet, messagePut)
import Data.Char (ord, intToDigit)
import Numeric

import Data.Sequence ((><), fromList)

import AddressBookProtos.AddressBook
import AddressBookProtos.Person
import AddressBookProtos.Person.PhoneNumber
import AddressBookProtos.Person.PhoneType

data UDPHandle = …
Run Code Online (Sandbox Code Playgroud)

haskell unpack protocol-buffers

6
推荐指数
1
解决办法
673
查看次数

动态更新Haskell中的绘图

我有一个执行长时间计算的程序,其结果显示为绘图.我目前正在使用Chart-0.14.我想显示部分结果,并在计算过程中更新. Graphics.Rendering.Chart.Gtk.updateCanvas :: Renderable a -> DrawingArea -> IO Bool似乎这样做,但我没有找到任何方法从剧情中获得DrawingArea.该函数renderableToWindow :: Renderable a -> Int -> Int -> IO ()不返回任何内容(并且在窗口关闭之前它不会返回).

我想做类似以下的事情:

main = do
drawingArea = forkRenderableToWindow (toRenderable $ plotLayout $
                     plot [0,0.1..10] sin "sin(x)") 640 480
updateCanvas  (toRenderable $ plotLayout $  plot [0,0.1..10] sin "sin(x)") drawingArea
Run Code Online (Sandbox Code Playgroud)

我该怎么做?我是否需要在Graphics.Rendering.Chart.Gtk一个版本中重新实现函数,DrawingArea以及以某种方式返回(我将如何执行此操作?forkIO?)立即返回而不关闭窗口?

plot haskell

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