小编Bak*_*riu的帖子

Haskell将多行代码视为单个函数调用

pure :: String -> ()
pure x = unsafePerformIO $ do
  print x
  return ()

pureCall :: String -> IO ()
pureCall x = do
  pure x
  putStrLn "inside child function"
Run Code Online (Sandbox Code Playgroud)

这会抛出编译错误,

  The function ‘pure’ is applied to three arguments,
    but its type ‘String -> ()’ has only one
Run Code Online (Sandbox Code Playgroud)

我在其他语言中使用分号作为代码行分隔符.但不确定,我怎么能在haskell中做到这一点,并将pureCall功能块作为两个单独的语句运行!!

haskell

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

如何允许数组单个元素解析失败,同时保留其他元素?

我有一个表现不佳的 json 源。它经常提供意外的 JSON,其中包含格式错误的数组元素。我想解析这个 JSON 并忽略任何格式错误的数组元素。

这是我的尝试:

{-# LANGUAGE OverloadedStrings #-}
module Main where

import Control.Applicative        ((<$>), (<*>))
import Control.Monad              (mzero)
import Data.Aeson
import Data.ByteString.Lazy.Char8 (ByteString, pack)

data Foo = Foo Integer [Maybe Bar] deriving (Show)
data Bar = Bar Integer Integer deriving (Show)

instance FromJSON Foo where
    parseJSON (Object v) = Foo <$> (v .: "a") <*> (v .: "b") 
    parseJSON _          = mzero

instance FromJSON Bar where
    parseJSON (Object v) = Bar <$> (v .: "c") <*> (v …
Run Code Online (Sandbox Code Playgroud)

haskell aeson

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

输入'where'时解析错误

我正在尝试“解决”给定d: 的佩尔方程x^2 - d * y^2 = 1,或者至少我想得到x > 0可以解决方程的最小值。到现在为止还挺好。这是我的 Haskell 代码

minX :: Integer -> Integer
minX n  | isSquare n = 1
        | otherwise  = minXRec [0,1,intSqrt n] [1,0,1] 0 1 (intSqrt n) n

minXRec :: [Integer] -> [Integer] -> Integer -> Integer -> Integer -> Integer -> Integer
minXRec (p0:p1:p2:x) (q0:q1:q2:y) m d a n
    | p2*p2 - n*q2*q2 == 1 = p2
    | minXRec [p1, p2, newA*p2+p1] [q1, q2, newA*q2+q1] …
Run Code Online (Sandbox Code Playgroud)

haskell where-clause

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

获取属于其OneToOne模型的属性排序的模型

假设有一个模型命名User,另一个命名与之PetOneToOne关系User,Pet模型有一个属性age,如何获得User拥有十大oldest狗的十个?

class User(models.Model):
     name = models.CharField(max_length=50, null=False, blank=False)

class Pet(models.Model):
     name = models.CharField(max_length=50, null=False, blank=False)
     owner = models.OneToOneField(User, on_delete=models.CASCADE)
     age = models.IntegerField(null=False)
Run Code Online (Sandbox Code Playgroud)

User,有一个属性friends,有一个ManyToMany与关系User,如何让十friendsUser Tom拥有十大oldest狗?

class User(models.Model):
     name = models.CharField(max_length=50, null=False, blank=False)
     friends = models.ManyToManyField(self, ...)

class Pet(models.Model):
     name = models.CharField(max_length=50, null=False, blank=False)
     owner = models.OneToOneField(User, on_delete=models.CASCADE)
     age = models.IntegerField(null=False)
Run Code Online (Sandbox Code Playgroud)

python django python-3.x

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

如何使用gdb有效调试多线程curses客户端-服务器应用程序?

我正在编写一个小的客户端/服务器应用程序,该应用程序ncurses在客户端上用作TUI工具包。客户端是多线程的,有一个线程(用于通过套接字与服务器通信)和一个用于处理UI的线程。我发现了一个错误,我想按照客户的指示逐步检查问题所在1

简单地运行客户端gdb是行不通的,因为gdb使用与客户端相同的终端,因此输出全部混乱了,这使得读取它的输出非常困难,gdb并且似乎也会干扰curses(例如halfdelay,在步进时出现模式)根据指示,我无法将任何按键发送给客户端,因为每次程序在gdb经过很短的时间后就会降级到。)

有没有办法gdb在“专用终端”中运行?我应该使用其他方法来调试此应用程序吗?您对在这种特定情况下如何减少障碍数量有何建议?


1实际的错误是,经过一定数量的操作(以完全确定的方式)后,UI 不会更新,而是等待额外的按键(因为我已经halfdelay精确设置了模式以避免这种情况,所以不需要) 。我想知道客户在那一刻在做什么。

c multithreading gdb ncurses

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

更改python sys.path的优先级

如何在python 2.7中更改sys.path中路径的优先级?我知道我可以使用PYTHONPATH环境变量,但这是我将得到的:

$ PYTHONPATH=/tmp python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> for i in sys.path:
...   print i
... 

/usr/local/lib/python2.7/dist-packages/pycuda-2014.1-py2.7-linux-x86_64.egg
/usr/local/lib/python2.7/dist-packages/pytest-2.6.2-py2.7.egg
/usr/local/lib/python2.7/dist-packages/pytools-2014.3-py2.7.egg
/usr/local/lib/python2.7/dist-packages/py-1.4.24-py2.7.egg
/usr/lib/python2.7/dist-packages
/tmp
/usr/lib/python2.7
/usr/lib/python2.7/plat-x86_64-linux-gnu
/usr/lib/python2.7/lib-tk
/usr/lib/python2.7/lib-old
/usr/lib/python2.7/lib-dynload
/usr/local/lib/python2.7/dist-packages
/usr/lib/python2.7/dist-packages/PILcompat
/usr/lib/python2.7/dist-packages/gtk-2.0
/usr/lib/python2.7/dist-packages/ubuntu-sso-client
>>> 
Run Code Online (Sandbox Code Playgroud)

/tmp/usr/lib/python2.7/dist-packages和之间添加/usr/lib/python2.7.

我的目标是让python从/usr/local/lib/python2.7/dist-packages最初加载包.

这就是我想要的:

$ python
Python 2.7.6 (default, Mar 22 2014, 22:59:56) 
[GCC 4.8.2] on linux2
Type "help", …
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

'try'可以决定程序何时停止

我有这个功能:

isUndefined :: () -> Bool    
isUndefined x = case unsafePerformIO $ (try (return $! x) :: IO (Either SomeException ())) of
                    Left _ -> True
                    Right _ -> False
Run Code Online (Sandbox Code Playgroud)

然后:

isUndefined () = False
isUndefined undefined = True
Run Code Online (Sandbox Code Playgroud)

解决停止问题.当然,这也可以扩展到其他类型.

我的问题:这怎么可能?难道Control.Exception.try真的破事吗?

haskell halting-problem

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

"func2(func1 arg)","(func2.func1)arg"或"func2 $ func1 arg"?

我想知道你会选择哪个选项?

putStrLn (show randomNum)
putStrLn $ show randomNum
(putStrLn . show) randomNum
Run Code Online (Sandbox Code Playgroud)

所有选项在语法上都是正确的.

  • 括号确保show首先执行并且putStrLn只获得一个参数.

  • $运营商负责展会功能和randomNum和执行showrandomNum,所以putStrLn只得到一个说法.

  • .操作者取putStrLn功能,show功能和randomNum与第一执行showrandomNum,然后putStrLn对结果.

但是在这个例子中,更像是类似于orkell还是更有意义?

haskell

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

将数字提高到小数(Data.Ratio)?

2^(2%1)GHCi中没有类型检查的表达式,错误消息是神秘的.为什么这不起作用,我需要改变什么?

我不能转换为另一种类型,我想要这样的表达式27^(1%3).

haskell types exponentiation ghci

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

为什么coq不能在这个依赖类型的程序中推断出0 + n = n?

我开始使用Coq,我想定义一些依赖类型的程序.考虑以下:

Inductive natlist : nat -> Type :=
  | natnil : natlist 0
  | natcons : forall k, nat -> natlist k -> natlist (S k).

Fixpoint natappend (n:nat) (l1: natlist n) (m:nat) (l2: natlist m) : natlist (n+m) :=
  match l1 with
    | natnil => l2
    | natcons _ x rest => natcons (n+m) x (natappend rest l2)
  end.
Run Code Online (Sandbox Code Playgroud)

natlist k将是一个nat长度的列表k.串联定义的问题natappend是以下错误:

Error:
In environment
natappend : forall n : nat,
            natlist …

type-inference list coq dependent-type

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