小编Vi.*_*Vi.的帖子

Clojure - 如何在系统宏之前扩展我的宏?

如果我这样做,例如:

(defmacro qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
Run Code Online (Sandbox Code Playgroud)

它失败是因为reify看到(qqq)而不是(toString [this] "Qqq").

通常的解决办法是,包"具体化"与我自己的事情调用宏,但它更长,更具侵入性.

如何使我的宏更强大,通常的宏首先扩展?

期待像:

(defmacro ^{:priority 100500} qqq [] '(toString [this] "Qqq"))
(reify Object (qqq))
Run Code Online (Sandbox Code Playgroud)

要么

(defmacro qqq [] '(toString [this] "Qqq"))
(expand-first #{qqq} (reify Object (qqq)))
Run Code Online (Sandbox Code Playgroud)

macros clojure

8
推荐指数
2
解决办法
966
查看次数

如何将多个阻塞Python生成器复用到一个?

请考虑以下伪代码:

def g_user():
    while True:
        yield read_user_input()

def g_socket():
    while True:
        yield read_socket_input()

def g_combined(gu, gs):
    # should read user or socket input, whichever is available

    while True:
        sel = select(gu, gs)
        if sel.contains(gu):
            yield gu.next()
        if sel.contains(gs):
            yield gs.next()

gc = g_combined ( g_user(), g_socket() )
Run Code Online (Sandbox Code Playgroud)

如何以最简单的方式实现这一点?

python generator python-2.7

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

如何将用户友好的中缀数学代码转换为Clojure代码?

我希望用户能够像这样输入:

5+6*t+sin(2*t)
Run Code Online (Sandbox Code Playgroud)

,所以它将转换为:

(+ 5 (* 6 t) (sin (* 2 t)))
Run Code Online (Sandbox Code Playgroud)

,所以我可以将它评估为一些JIT的函数,以后再高效执行.

是否已有可用于最新Clojure的库(具有运营商优先级)?

parsing clojure infix-notation

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

是否可以在Clojure REPL中使用_good_ tab完成?

好的选项卡完成意味着使用反射或其他任何东西动态生成(不需要在某处预先定义完成的预定义列表),并且知道在特定位置可以跟什么不能跟什么.

就像(.<TAB> x)我将得到x的方法列表一样,在(println <TAB>)我得到本地和全局定义(Math/<TAB>的列表中,我得到数学函数列表...

例如,我喜欢Tab在ghci(Haskell)或ipython中工作的方式.

clojure tab-completion read-eval-print-loop

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

如何分离"git gui"在Windows上的"Git bash"中开始?

例如,

  1. 我开始"git bash";
  2. 我导航到certian目录;
  3. 我开始git gui&;
  4. 我关闭控制台窗口或按Ctrl + C.

Git-gui的窗口消失了.即使我用过git gui&disown.当我按下Ctrl + C时,即使它不在前景中.

如何git gui从Windows控制台正确分离?

windows git msys git-gui git-bash

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

/ dev/ppp和/ dev/net/tun之间有什么区别?

PPP和tun/tap有什么区别?两者似乎都是用于在用户空间程序上实现网络.

使用PPP,内核创建ppp%d供使用,让用户空间程序为它提供后端.
使用tun/tap,内核创建tun%d供使用,让用户空间程序为它提供后端...

将程序从使用tun/tap (我的Android设备上似乎不可用)更改为ppp 有多难?

linux ppp tun

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

如何重构这个Haskell随机字节输出器?

我正在尝试在Haskell内快速生成随机数据,但是当我尝试使用任何惯用方法时,我会得到低速和大GC开销.

这是简短的代码:

import qualified System.Random.Mersenne as RM
import qualified Data.ByteString.Lazy as BL
import qualified System.IO as SI
import Data.Word

main = do
    r <- RM.newMTGen  Nothing :: IO RM.MTGen
    rnd <- RM.randoms  r :: IO [Word8]
    BL.hPutStr SI.stdout $ BL.pack rnd
Run Code Online (Sandbox Code Playgroud)

这是快速代码:

import qualified System.Random.Mersenne as RM
import qualified Data.ByteString as B
import qualified Data.ByteString.Lazy as BL
import qualified Data.Binary.Put as DBP
import qualified System.IO as SI
import Data.List
import Control.Monad (void, forever)
import Data.Word

main = do
    r <- …
Run Code Online (Sandbox Code Playgroud)

random io performance haskell

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

如何查找所有Facebook"喜欢"活动照片的时间戳?

从各种帖子中我知道'喜欢'的时间戳由FB存储,特别是从这里:

https://developers.facebook.com/docs/reference/opengraph/action-type/og.likes/
Run Code Online (Sandbox Code Playgroud)

但是,我很难弄明白的是,如果一张照片被发布到一个活动中,我会得到所有图片的喜欢和每个喜欢的时间(当然,由谁).

据我所知,它必须是这样的:

  1. 让每个用户受邀参加活动.
  2. 获得每个用户的喜欢.
  3. 检查喜欢的任何fbid是否与任何活动照片的id匹配.

但是肯定第2步需要我代表每个受邀用户登录,无论如何,以上真的不会过多地推荐FB吗?所以我假设我的程序不正确.

任何人都可以告诉我fql将获得一个事件的照片,然后是喜欢这张照片的用户,然后是类似的时间戳吗?

提前致谢!

php facebook facebook-fql

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

如何检查块是否存在于稀疏文件中(对于简单的写时复制)?

如何获取稀疏块大小并检查Linux中reiserfs/ext3中稀疏文件中给定偏移量处是否存在数据?

我想用它来实现使用FUSE的简单的copy-on-write块设备.

或者我最好将位图保存在单独的文件中?

linux filesystems copy-on-write sparse-matrix

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

使用Haskell的"Maybe",输入声明[beginner's question]

我已经开始尝试Haskell并遇到问题.qqq是一个函数,如果使用"Nothing"调用则应打印一个字符串,如果使用"Just something"调用则打印其他内容.

第一次尝试似乎工作:

qqq Nothing = print "There isn't anything to be printed."
qqq (Just x) = print "There is something to be printed." >> print x

main :: IO ()
main = qqq (Just 43)
Run Code Online (Sandbox Code Playgroud)

但:

  • 当我试图main = qqq (Nothing)让它失败时(约束中的"模糊类型变量'a0':(显示a0)因使用'qqq'而产生"")
  • 如果我想在失败时添加类型签名:
    • qqq :: Maybe x => x -> IO ()- > Type constructor 'Maybe' used as a class- >但不是吗?
    • qqq :: (Maybe x) -> IO ().现在签名本身看起来很成功.但是,如果遇到main = qqq (Just 43)这种神秘的(Show a0) …

haskell nothing maybe type-signature

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