小编Wiz*_*zek的帖子

我可以在TypeScript中声明自定义数字类型吗?

我可以以某种方式声明自定义数字类型吗?例如,我想要一个UnixMsDate和一个UnixSDate类型,我想如果TS可以帮助我总是区分和消除这两者之间的歧义,这意味着我从不会意外混淆它们.虽然能够明确地在它们之间(和/从数字)进行转换.

我试过type UnixMsDate = number并编译,但它似乎只是数字的可互换别名.

我正在寻找什么可能吗?

typescript

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

Idris可以支持行多态吗?

从而我可以构建一个匿名的临时记录; 这是可编辑的,可附加的,可修改的,其中每个值可以具有不同的异构类型,并且编译器检查消费者类型期望与所有给定键的生成记录的类型是否统一?

与Purescript支持的类似.

idris

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

如果发生异常,是否可以访问“ WriterT”的部分收集的“ tell”?

是否可能有WriterT monad tell在异常情况下能够共享其部分收集的s?如果我try以外runWriterT的地方w似乎被丢弃了。如果我尝试try进去,我似乎需要MonadUnliftIOMonadUnliftIO听起来它可能对我有帮助,但是该软件包说它只能解除单子语境,而不能解除我想为Writer的单子态。有没有人用Writer或类似工具做到这一点?

伪代码示例:

x <- runWriterT $ do
  result <- try $ do
    tell "a"
    tell "b"
    error "c"
    tell "d"
  case result of
    Left e -> Just e
    Right a -> Nothing

x `shouldBe` (Just "c", "ab")
Run Code Online (Sandbox Code Playgroud)

haskell

5
推荐指数
0
解决办法
98
查看次数

如何在Haskell中"透明地扩充"一个函数?

情况

我有函数f,我想用函数扩充g,导致函数命名h.

定义

通过"扩充",在一般情况下,我的意思是:转换函数的输入(一个或多个参数)或输出(返回值)f.

通过"扩充",在特定情况下,(特定于我当前的情况)我的意思是:只转换函数的输出(返回值),f同时保持所有参数不变.

通过"透明",在"扩充"的背景下,(一般情况具体情况)我的意思是:g尽可能松散地实现耦合的实现f.

具体情况

在我目前的情况下,这是我需要做的:

h a b c = g $ f a b c

我有兴趣将其重写为以下内容:

h = g . f -- Doesn't type-check.

因为从的角度hg,也无所谓什么样的参数f需要,他们只关心返回值,因此这将是紧耦合提论据以任何方式.例如,如果f将来的参数计数发生变化,h还需要进行更改.

至今

我在#haskell IRC频道问了lambdabot:@pl h a b c = g $ f a b c我得到了回复:

h = ((g …

haskell

4
推荐指数
1
解决办法
276
查看次数

限制允许进程树使用的CPU百分比?

我可以限制正在运行的进程的CPU百分比以及它当前和未来的所有子进程可以使用的组合吗?我听说过这个cpulimit工具,但这似乎忽略了子进程.

编辑:所以,我发现的答案需要cpulimit不断运行,直到我们希望限制保持有效,因为它通过主动发送暂停然后继续向进程发送信号来进行限制.是否有其他方法可以实现这种限制效果,也许不需要在后台运行这样的辅助过程?

unix linux

4
推荐指数
1
解决办法
1454
查看次数

是否有针对Haskell/GHCi /其他的调试器"声明"?

背景

我正在学习GHCi:破解功能.JS有一个内置语句debugger;,如果正在进行调试,它将充当断点,否则不执行任何操作.

Haskell/GHCi有类似的声明/功能吗?

进一步说明

我正在思考一些事情Debug.Trace.trace :: String -> a -> a.

如果它在unsafePerformIO内部使用,或者依赖GHCi特定的东西,它是可以的,因为它仅用于调试.

或者,如果还没有任何东西,可能不会有这样的东西,:set -fbreak-on-exception并有一个抛出异常并立即捕获它的函数?(unsafePerformIO这里也可能需要,因此函数可以放在纯代码中.)

debugging haskell

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

(如何)在"dependent-map"GADT中有多态值?

任何人都知道如何/可以Foo此代码中扩展GADT :

{-# language GADTs #-}
{-# language DeriveGeneric #-}
{-# language DeriveAnyClass #-}
{-# language TemplateHaskell #-}
{-# language StandaloneDeriving #-}

import Prelude                  (Int, String, print, ($))
import Data.GADT.Show           ()
import Data.GADT.Compare        ()
import Data.Dependent.Map       (DMap, fromList, (!))
import Data.Dependent.Sum       ((==>))
import Data.GADT.Compare.TH     (deriveGEq, deriveGCompare)
import Data.Functor.Identity    (Identity)

data Foo a where
  AnInt   :: Foo Int
  AString :: Foo String

deriveGEq      ''Foo
deriveGCompare ''Foo

dmap1 :: DMap Foo Identity
dmap1 = fromList [AnInt ==> 1, …
Run Code Online (Sandbox Code Playgroud)

haskell gadt reflex

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

是否可以在类型类声明和/或实例化中使用GHC.Stack.HasCallStack?

假设我有这个类型类:

import GHC.Stack

class Foo a where
  foo :: a
instance Foo Int where
  foo = undefined
Run Code Online (Sandbox Code Playgroud)

如何将HasCallStack约束添加到foo值?我试过这样的:

class (HasCallStack) => Foo a where
  foo :: a
instance (HasCallStack) => Foo Int where
  foo = undefined
Run Code Online (Sandbox Code Playgroud)

我得到一个类型错误,如:

source.hs:10:1: error:
    • Illegal implicit parameter ‘?callStack::CallStack’
    • In the context: HasCallStack
      While checking the super-classes of class ‘Foo’
      In the class declaration for ‘Foo’
Run Code Online (Sandbox Code Playgroud)

我也试过只对类或实例有约束.我在两种情况下都有类似的错误.

这有可能吗?或者是否无法为班级成员获得调用堆栈?如果有可能以某种方式获得调用堆栈,它将帮助我更容易地调试一些东西.

haskell

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

HSpec(或HUnit)是否有可能将进一步的信息附加到仅在发生故障时才打印的断言上?

与quickcheck如何支持反例类似:

property \x ->
  counterexample ("Foo failed with: " ++ ...) $
    foo x
Run Code Online (Sandbox Code Playgroud)

但以某种方式与配合使用shouldBe,例如

failDetails (" details: " ++ baz a) $
  a `shouldBe` 2
Run Code Online (Sandbox Code Playgroud)

我希望它按照以下方式打印一些内容:

expected: 2
 but got: 3
 details: ...
Run Code Online (Sandbox Code Playgroud)

haskell hunit hspec

2
推荐指数
1
解决办法
125
查看次数

如何在不编译和链接整个项目的情况下加载`stack ghci`?

是否stack仅在需要时为其他人编译和链接整个项目stack ghci

它不应该跳过前者并立即跳转到ghci加载源吗?我已经观察到它在我的大多数项目中都为我做,因此它正在做看似多余的工作。这是设计使然,还是我的某些堆栈项目配置错误?

也许这是cabal在没有stack要求的情况下由底层完成的?

无论如何,当我只想输入时,我可以做些什么来跳过编译+链接stack ghci

haskell cabal haskell-stack

2
推荐指数
1
解决办法
370
查看次数

如果在深镜头查找/分配中某处遇到"Nothing",是否可以设置默认值?

如果Nothing在深镜头查找/分配中遇到某个地方,是否可以设置默认值?

例如,查找:

(Just (4, 3), 2) ^. _1 . (maybe (6, 5)) . _1 == 4
(Nothing,     2) ^. _1 . (maybe (6, 5)) . _1 == 6
Run Code Online (Sandbox Code Playgroud)

或者更重要的是,对于作业:

((Just (4, 3), 2) & _1 . (maybe (6, 5)) . _1 .~ 7) == (Just (7, 3), 2)
((Nothing,     2) & _1 . (maybe (6, 5)) . _1 .~ 7) == (Just (7, 5), 2)
Run Code Online (Sandbox Code Playgroud)

haskell haskell-lens

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

如果我的(zsh)Shell每次打开终端时都向我抛出这些错误/警告,那是什么意思?

从我将Mavericks升级到优胜美地以来,这是我每次启动Terminal.app时都会看到的内容:

dyld: Library not loaded: /usr/local/lib/libpcre.1.dylib
  Referenced from: /usr/local/bin/zsh
  Reason: image not found
zsh: trace trap
/Users/user/sandbox/repos/zsh-notify/notify.plugin.zsh:55: command not found: add-zsh-hook
/Users/user/sandbox/repos/zsh-notify/notify.plugin.zsh:56: command not found: add-zsh-hook
Run Code Online (Sandbox Code Playgroud)

为了查看权限是否被弄乱了,我检查了

?  exp-scotty  where zsh
/usr/local/bin/zsh
/usr/local/bin/zsh
/bin/zsh
/bin/zsh
?  exp-scotty  ll `where zsh`
-rwxr-xr-x  1 root   wheel   538K Sep 10 01:19 /bin/zsh
-rwxr-xr-x  1 root   wheel   538K Sep 10 01:19 /bin/zsh
lrwxr-xr-x  1 milan  admin    27B Oct 28 10:59 /usr/local/bin/zsh -> ../Cellar/zsh/5.0.7/bin/zsh
lrwxr-xr-x  1 milan  admin    27B Oct 28 10:59 /usr/local/bin/zsh -> ../Cellar/zsh/5.0.7/bin/zsh …
Run Code Online (Sandbox Code Playgroud)

unix macos shell zsh

0
推荐指数
1
解决办法
509
查看次数