小编pat*_*pat的帖子

使用Python进行SSH的最简单方法是什么?

如何从本地Python(3.0)脚本简单地SSH到远程服务器,提供登录/密码,执行命令并将输出打印到Python控制台?

我宁愿不使用任何大型外部库或在远程服务器上安装任何东西.

python unix linux ssh

78
推荐指数
7
解决办法
18万
查看次数

这个C for-loop如何打印文本艺术金字塔?

这是我第一次在这里发帖,希望我做得对.

基本上我需要帮助试图找出我用C编写的一些代码.程序的目的是要求用户输入0到23之间的数字.然后,根据用户输入的数字,半金字塔将打印(就像旧学校马里奥游戏中的那些).我是编程的初学者,仅凭运气就得到了我的代码的答案,但现在我无法确定我的for循环如何提供金字塔形象.

#include <stdio.h>

int main ( void )
{
    int user_i;
    printf ( "Hello there and welcome to the pyramid creator program\n" );
    printf ( "Please enter a non negative INTEGER from 0 to 23\n" );
    scanf ( "%d", &user_i );

    while ( user_i < 0 || user_i > 23 )
    {
        scanf ( "%d", &user_i );
    }

    for ( int tall = 0; tall < user_i; tall++ )
    {
        // this are the two for loops that happened …
Run Code Online (Sandbox Code Playgroud)

c for-loop

25
推荐指数
4
解决办法
7163
查看次数

关于一元价值的案例

有没有办法对monad中存储的值执行一个案例,而不必将名称绑定到它?

即而不是这样做:

c <- getChar
case c of
  ...
Run Code Online (Sandbox Code Playgroud)

有没有办法做到这一点:

mcase getChar of
  ...
Run Code Online (Sandbox Code Playgroud)

或者,如果case语句可以部分应用,那将是很好的:

case of
  ...
Run Code Online (Sandbox Code Playgroud)

会不情愿地:

\a -> case a of
  ...
Run Code Online (Sandbox Code Playgroud)

所以你可以这样做:

getChar >>= case of
              ...
Run Code Online (Sandbox Code Playgroud)

haskell

21
推荐指数
3
解决办法
3003
查看次数

更新/重新加载标记而无需重新加载谷歌地图

我正在使用以下代码生成标记引脚.它加载完美,但在这张地图的左边我有过滤器.如何在不重新加载地图的情况下重新加载标记?这已经引起了一些挫折,所以任何帮助将不胜感激.

非常感谢,

    //Google map results
        var contentStrings = [];
        var infowindow = new google.maps.InfoWindow();
        var mapinited = false;
        var map;
        var myOptions = {
          zoom: 11,
          center: myLatlng,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        }
        var currentinfobox;
        var myLatlng;
        var markersArray=[];
        var LatLngList = [];

$().ready(function() {

    //reinit search 
    if (window.location.hash) {
        submitForm(window.location.hash.replace('#',''));
    }
    else if (readCookie('sf')) {
            //submitForm(readCookie('sf'));
    }

    //init map
    $('#map_view').click(function() {
        if (mapinited) {
            return;
        } else {
            mapinited = true;
            initMap();
        }



    function initMap() {
            locate(["Ireland"],function(result) {
        map = new …
Run Code Online (Sandbox Code Playgroud)

javascript jquery google-maps

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

不断发展的数据结构

我正在尝试在Haskell中为类C语言编写编译器.编译器通过转换AST来进行.第一个传递解析输入以创建AST,使用符号表绑定结点,以允许在定义符号之前定位符号,而无需前向引用.

AST包含有关类型和表达式的信息,它们之间可以有连接; 例如,sizeof(T)是一个依赖于类型的表达式T,并且T[e]是一个依赖于常量表达式的数组类型e.

类型和表达式由Haskell数据类型表示,如下所示:

data Type = TypeInt Id
          | TypePointer Id Type -- target type
          | TypeArray Id Type Expr -- elt type, elt count
          | TypeStruct Id [(String, Type)] -- [(field name, field type)]
          | TypeOf Id Expr
          | TypeDef Id Type

data Expr = ExprInt Int -- literal int
          | ExprVar Var -- variable
          | ExprSizeof Type
          | ExprUnop Unop Expr
          | ExprBinop Binop Expr Expr
          | ExprField Bool …
Run Code Online (Sandbox Code Playgroud)

haskell

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

Parsec.Expr不支持重复前缀/后缀运算符

文档Parsec.Expr.buildExpressionParser说:

相同优先级的前缀和后缀运算符只能出现一次(如果 - 是前缀否定,则不允许--2).

事实上,这是咬我的,因为我试图解析的语言允许任意重复它的前缀和后缀运算符(想想像C表达式**a[1][2]).

那么,为什么要Parsec制定这个限制,我该如何解决呢?

我想我可以将我的前缀/后缀解析器移到term解析器中,因为它们具有最高优先级.

**a + 1
Run Code Online (Sandbox Code Playgroud)

被解析为

(*(*(a)))+(1)
Run Code Online (Sandbox Code Playgroud)

但是如果我想要解析它,我该怎么办?

*(*((a)+(1)))
Run Code Online (Sandbox Code Playgroud)

如果buildExpressionParser做了我想要的,我可以简单地重新排列表中运算符的顺序.

注意请参阅此处以获得更好的解决方

haskell parsec

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

哈斯克尔的祖父悖论

我正在尝试为我正在Haskell中编写的编译器编写一个重命名器.

重命名器扫描AST以查找符号DEF,它将其输入符号表,以及符号USE,它通过查看符号表来解析.

在这种语言中,使用可以在defs之前或之后使用,因此看起来需要2遍策略; 一次通过查找所有defs并构建符号表,第二次用于解决所有用途.

但是,由于Haskell是懒惰的(像我一样),我认为我可以打结,并在实际构建之前将重命名符号表传递给最终符号表.只要我保证实际构建它,这很好.在命令式编程语言中,这就像回传邮件一样.这在Haskell中有效,但必须注意不要引入时间悖论.

这是一个简洁的例子:

module Main where

import Control.Monad.Error
import Control.Monad.RWS
import Data.Maybe ( catMaybes )
import qualified Data.Map as Map
import Data.Map ( Map )

type Symtab = Map String Int

type RenameM = ErrorT String (RWS Symtab String Symtab)

data Cmd = Def String Int
         | Use String

renameM :: [Cmd] -> RenameM [(String, Int)]
renameM = liftM catMaybes . mapM rename1M

rename1M :: Cmd -> RenameM (Maybe (String, Int))
rename1M (Def name value) = do …
Run Code Online (Sandbox Code Playgroud)

haskell

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

Writer Monad是否保证正确的关联连接?

在Haskell的Validations中声称使用了Writer保证右关联级联.但是,这个例子似乎表明不是这样.什么是正确的答案?

{-# LANGUAGE OverloadedStrings #-}

import Control.Monad.Writer
import Data.String

data TM = TMempty
        | TMappend TM TM
        | TMfromString String

instance IsString TM where
  fromString = TMfromString

instance Monoid TM where
  mempty  = TMempty
  mappend = TMappend

instance Show TM where
  showsPrec d TMempty = showString "\"\""
  showsPrec d (TMfromString s) = showString $ show s
  showsPrec d (TMappend a b) = showParen (d > 0) $
    showsPrec 1 a .
    showString " ++ " .
    showsPrec …
Run Code Online (Sandbox Code Playgroud)

monads haskell writer

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

无限计数器的无限列表

对于那些有可疑头脑的人来说,这不是家庭作业,只是好奇.

给定一个有限的字母表,是否有可能构建一个由反向词汇顺序的字母表组成的无限长单词列表?

即给出字母表 "ab"

是否可以构建列表:

["aaaaaa...", "baaaaa...", "abaaaa...", "bbaaaa...", "aabaaa...", ...]
Run Code Online (Sandbox Code Playgroud)

where ...表示扩展到无限长度的列表(和列表列表).

一个天真的尝试是:

counters alphabet = [c:ounter | ounter <- counters alphabet, c <- alphabet]
Run Code Online (Sandbox Code Playgroud)

但这不起作用,因为它是递归的.

当然,对于工作版本,如果您尝试打印结果,则只会看到第一个元素被打印为字母表中第一个元素的无限列表.但是,您应该能够这样做:

mapM_ (print . take 2) . take 4 . counters $ "ab"
Run Code Online (Sandbox Code Playgroud)

并看到输出:

aa
ba
ab
bb
Run Code Online (Sandbox Code Playgroud)

haskell infinite

10
推荐指数
3
解决办法
470
查看次数

数字类型签名

是否可以使用数字参数创建类型?

即如果我想创建一个具有固定位宽的整数类型:

newtype FixedWidth w = FixedWidth Integer

addFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (w+1)
mulFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (2*w)
Run Code Online (Sandbox Code Playgroud)

因此,类型检查器只允许FixedWidth添加或相加相同类型的s,但也确定结果的正确精度.

我知道你可以这样做:

data Nil = Nil
data Succ x = Succ

addFixedWidth :: FixedWidth w -> FixedWidth w -> FixedWidth (Succ w)
Run Code Online (Sandbox Code Playgroud)

并代表数字4 Succ (Succ (Succ (Succ Nil)))),但这非常难看.我还需要弄清楚如何Succ为乘法结果类型附加两个s.

haskell types type-systems type-level-computation

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