小编yai*_*chu的帖子

Xcode Instrument的拆卸时间分析的可靠性

我使用Instrument的时间分析器来描述我的代码,并放大到反汇编,这里是结果的片段:

仪器截图

我不希望一条mov指令占23.3%的时间,而div指令几乎什么也没做.这让我相信这些结果是不可靠的.这是真的吗?或者我只是遇到了仪器错误?或者我是否需要使用一些选项来获得可靠的结果?

这个问题是否有任何参考?

x86 xcode profiling instruments intel-pmu

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

Haskell:类型类问题

我想定义以下类型类Mapping:

{-# LANGUAGE MultiParamTypeClasses #-}

class Mapping k v m where
  empty :: m v
  insert :: k -> v -> m v -> m v
  search :: k -> m v -> Maybe v
  delete :: k -> m v -> m v
Run Code Online (Sandbox Code Playgroud)

一个例子MappingData.Map.Map

{-# LANGUAGE ..., FlexibleInstances #-}

instance Ord k => Mapping k v (Map.Map k) where
  empty = Map.empty
  search = Map.lookup
  insert = Map.insert
  delete = Map.delete
Run Code Online (Sandbox Code Playgroud)

现在我想创建一个类型Trie :: …

haskell typeclass

7
推荐指数
2
解决办法
1028
查看次数

具有多态类型的STUArray

我想使用STmonad和STUArrays 实现一个算法,我希望它能够同时使用FloatDouble数据.

我将演示一个更简单的示例问题:计算memoized scanl (+) 0(我知道它可以解决STUArray,只是使用例子).

{-# LANGUAGE FlexibleContexts, ScopedTypeVariables #-}

import Control.Monad
import Control.Monad.ST
import Data.Array.Unboxed
import Data.Array.ST

accumST :: forall a. (IArray UArray a, Num a) => [a] -> Int -> a
accumST vals = (!) . runSTUArray $ do
  arr <- newArray (0, length vals) 0 :: ST s (STUArray s Int a)
  forM_ (zip vals [1 .. length vals]) $ \(val, i) ->
    readArray arr …
Run Code Online (Sandbox Code Playgroud)

haskell typeclass stuarray

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

在将Coq提取到Haskell时如何设置模块名称

当我Extraction Language Haskell.在Coq文件中使用Coq提取/编译Coq到Haskell 并运行时coqtop -compile mymodule.v > MyModule.hs,我得到了一个以Haskell开头的模块module Main where.

是否可以选择设置生成的Haskell模块名称?

我目前管道像这样sed -

coqtop -compile mymodule.v | sed s/Main/MyModule/ > MyModule.hs
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一个更清洁的解决方案.

haskell coq coq-extraction

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

为什么元组不会收到未使用的变量警告?

在以下示例中,使用 编译时-Wall,不会警告一些未使用的变量:

#include <tuple>

struct Foo
{
    int a, b;
};

struct Bar
{
    ~Bar() {}

    int a, b;
};

int three() { return 3; }

int main()
{
    Foo f0 {1, 2};
    Foo f1 {three(), 2};
    Bar b0 {1, 2};
    Bar b1 {three(), 2};
    std::tuple<int, int> p0 {1, 2};
    std::tuple<int, int> p1 {three(), 2};
}
Run Code Online (Sandbox Code Playgroud)
  • clang 12.0.1:bs 并且p1没有收到警告
  • gcc 11.2:bs 和ps 不会收到警告

为什么这些没有得到警告?有没有办法标记析构函数Bar,使其不会掩盖警告?

c++

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

Haskell:通用的IORef,MVar?

我做了以下函数,该函数特定于IO monad:

memoIO :: MonadIO m => m a -> IO (m a)
memoIO action = do
  ref <- newMVar Nothing
  return $ do
    x <- maybe action return =<< liftIO (takeMVar ref)
    liftIO . putMVar ref $ Just x
    return x
Run Code Online (Sandbox Code Playgroud)

用法示例:

main :: IO ()
main = do
  p <- memoIO $ putStrLn "hello"
  p
  p
Run Code Online (Sandbox Code Playgroud)

打印" hello"一次.

我想(一个小小的烦恼)让它尽可能多地工作(不仅仅是IO).

我在hackage上发现了stateref,我的代码看起来像这样:

{-# LANGUAGE FlexibleContexts, FlexibleInstances, MultiParamTypeClasses, Rank2Types, UndecidableInstances #-}

import Data.MRef

class (NewMRef r m a, DefaultMRef r …
Run Code Online (Sandbox Code Playgroud)

haskell types ioref

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

P2P网络游戏/应用程序:类似"battle.net"的匹配服务器的不错选择

我正在制作一个网络游戏(1v1),在游戏中它的p2p - 不需要游戏服务器.

但是,为了让玩家能够"找到对方"而不需要在另一个媒体中进行协调并输入IP地址(类似于网络游戏的调制解调器时代),我需要一个协调/匹配服务器.

我不能使用常规的网络托管,因为:

  • 客户端将以UDP进行通信.
  • 因此,我需要进行UDP打孔才能通过NAT
  • 这将要求服务器以UDP通话并知道客户端的IP和端口
  • afaik与常规的网络托管(PHP/etc)我只能得到客户端的IP地址,只能通过TCP(HTTP)进行通信.

我目前正在考虑的选项:

  • 使用我的程序可以接受UDP连接的托管解决方案.(任何建议?)

  • UDPonNAT似乎这样做但使用GTalk并要求每个客户端都有一个GTalk帐户(这可能使它成为一个不合适的解决方案)

有任何想法吗?谢谢 :)

hosting networking p2p udp

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

hackage包依赖项和面向未来的库

在cabal文件的dependencies部分中:

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0
Run Code Online (Sandbox Code Playgroud)

我应该做些什么

Build-Depends: base >= 3 && < 5, transformers >= 0.2.0 && < 0.3.0
Run Code Online (Sandbox Code Playgroud)

(对我依赖的软件包的版本设置上限)

或不?

我将使用一个真实的例子:Hackage上的"List"包(List monad转换器和类)

  • 如果我没有限制 - 我的包装可能会因"变形金刚"的改变而破裂
  • 如果我把限制-使用"变形金刚",但使用的是较新的版本将无法使用用户liftliftIO使用ListT,因为它只是这些类变压器,0.2.X的实例

我想应用程序应该总是设置上限,以便它们永远不会中断,所以这个问题只是关于库:

我应该使用依赖关系的上限版本吗?

haskell cabal hackage

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

如何使heroku在运行collectstatic时自动运行compilemessages

python manage.py compilemessages
Run Code Online (Sandbox Code Playgroud)

locale/en/LC_MESSAGES/django.mo从翻译源文件名(如)中创建名为的编译后的翻译文件locale/en/LC_MESSAGES/django.po

我想让*.mogit忽略这些文件而不将它们提交到存储库,因为这些不是源文件。

Heroku已经知道要表演

python manage.py collectstatic
Run Code Online (Sandbox Code Playgroud)

用于Django项目。

我如何使它也发挥作用compile messages

目前,我通过将编译结果文件(*.mo)添加到我的存储库中来解决此问题,但我想知道是否有更好的方法。

(如果相关-我网站的仓库:https : //github.com/yairchu/vote_tool

django heroku

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

使用部署目标构建 Haskell macOS 可执行文件

我想分发一个用 Haskell 构建gui 应用程序,但是当我尝试在不同的 Mac(使用较旧的 macOS)上打开它时,它失败了。

这似乎是由于mach-o load-command 中的minos值造成的LC_BUILD_VERSION

% otool -l ./lamdu | grep minos
    minos 11.0
Run Code Online (Sandbox Code Playgroud)

如何指定 GHC/Cabal/stack 要使用的部署目标(相当于 Clang 的-mmacosx-version-min标志)?

macos haskell ghc cabal

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