小编Wil*_*sem的帖子

如何覆盖新类型的显示?

我想覆盖Haskell中的默认整数构造函数,因此它们产生字符串(主要是为了好奇,但暂时为LaTeX的\ frac {} {}带来不便的输入替代.

我希望能够使用语言本身,而不是使用特殊的解析器,但我想这可能不会成功...

module Main where

import Prelude hiding ((+))

newtype A = A Int deriving (Eq, Show, Num)
default (A)

(+) :: A -> (A -> String)
(A a) + (A b) = (show a) ++ " + " ++ (show b)

main2 = 3+4

main :: IO ()
main = putStrLn main2
Run Code Online (Sandbox Code Playgroud)

上面的问题是+函数只适用于(A,A)而不是(A,String)等.如果一个简单地省略模式匹配"(A a)"并写入"a"代替,那么show()函数以"A"为前缀,因此"3"变为"A 3"而不是"3".

我想覆盖Show for A,但它似乎很头疼......

haskell show typeclass

7
推荐指数
3
解决办法
8655
查看次数

从指针c ++获取数组的大小

我正在编写一个返回数组中最大整数的简单函数.我遇到的问题是找到数组中的元素数量.

这是函数头:

int largest(int *list, int highest_index)
Run Code Online (Sandbox Code Playgroud)

如何获取数组'列表'中的整数数.

我尝试了以下方法:

int i = sizeof list/sizeof(int); //returns incorrect value
int i = list.size(); // does not compile
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激!

c++ arrays

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

由`bootstrap-select`中的`multiple`表单提交的值

如果使用bootstrap和生成表单bootstrap-select:

<form action="handle.php" method="post">
    <select name="pids" class="selectpicker" multiple>
        <option value="1">A</option>
        <option value="2">B</option>
        <option value="6">C</option>
    </select>
</form>
Run Code Online (Sandbox Code Playgroud)

并且一个选择所有或多个项目,只有具有最后选择的项目value被发布到handle.php页面.

handle.php

<?php
var_dump($_POST);
?>
Run Code Online (Sandbox Code Playgroud)

结果:

array(1) { ["pids"]=> string(1) "6" } 
Run Code Online (Sandbox Code Playgroud)

如何检索所有选定的项目?

javascript php twitter-bootstrap bootstrap-select

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

这个上下文无关语法如何使用Prolog功能中的差异列表?

我正在阅读Prolog中关于上下文无关语法的本教程,他们在页面底部提到使用差异列表在Prolog中实现上下文无关语法,包括以下代码块:

s(X,Z):-  np(X,Y),  vp(Y,Z). 

np(X,Z):-  det(X,Y),  n(Y,Z). 

vp(X,Z):-    v(X,Y),  np(Y,Z). 
vp(X,Z):-    v(X,Z). 

det([the|W],W). 
det([a|W],W). 

n([woman|W],W). 
n([man|W],W). 

v([shoots|W],W).
Run Code Online (Sandbox Code Playgroud)

它提到:

仔细考虑这些规则.例如,s规则说:我知道一对列表X和Z表示一个句子,如果(1)我可以消耗X并留下Y,而X和Y对代表一个名词短语,(2)然后我可以继续消耗Y而将Z留在后面,而YZ代表一个动词短语.np规则和第二个vp规则的工作方式类似.

将第一个列表视为需要消耗的内容(或者如果您愿意:输入列表),将第二个列表视为我们应该留下的内容(或:输出列表).从这个(相当程序上)的角度来看差异列表

[a,woman,shoots,a,man]  [].
Run Code Online (Sandbox Code Playgroud)

代表一个女人射杀一个男人的句子,因为它说:如果我消耗左边的所有符号,并留下右边的符号,那么我就有我感兴趣的句子.也就是说,我们感兴趣的句子是这两个列表的内容之间的差异.

这就是我们需要知道的差异列表来重写我们的识别器.如果我们只是牢记消费某些东西的想法,并留下一些东西,我们会获得以下认知:

作为解释,但这只是没有做任何事情来澄清这段代码给我.我知道它比使用更有效append/3,但至于消费和留下其他人的概念,它似乎比以前的append/3实现更令人困惑,我只是无法做出正面或反面.此外,当我将该代码复制并粘贴到Prolog可视化工具中以试图理解它时,可视化工具表示存在错误.谁能对此有所了解?

parsing prolog logic-programming dcg difference-lists

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

折叠异构编译时列表

我有一个异类型列表(或者至少是我的想法):

data Nul

data Bits b otherBits where 
    BitsLst :: b -> otherBits -> Bits b otherBits 
    NoMoreBits :: Bits b Nul
Run Code Online (Sandbox Code Playgroud)

现在,给定一个输入类型b,我想通过所有Bits类型的板b并总结它们,忽略其他类型的板b' /= b:

class Monoid r => EncodeBit b r | b -> r where 
    encodeBit :: b -> r

class AbstractFoldable aMulti r where 
    manyFold :: r -> aMulti -> r

instance (EncodeBit b r, AbstractFoldable otherBits r) => 
                     AbstractFoldable (Bits b otherBits ) r where 
    manyFold r0 (BitsLst …
Run Code Online (Sandbox Code Playgroud)

haskell hlist type-level-computation

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

在列表和数组中按索引获取struct项

当我使用一个structs 数组(例如System.Drawing.Point)时,我可以逐个索引并更改它.

例如(此代码工作正常):

Point[] points = new Point[] { new Point(0,0), new Point(1,1), new Point(2,2) };
for (int i = 0; i < points.Length; i++)
{
    points[i].X += 1;
}
Run Code Online (Sandbox Code Playgroud)

但是当我使用List时,它不起作用:

无法修改'System.Collections.Generic.List.this [int]'的返回值,因为它不是变量

示例(此代码无法正常工作):

List<Point> points = new List<Point>  { new Point(0,0), new Point(1,1), new Point(2,2) };
for (int i = 0; i < points.Count; i++)
{
    points[i].X += 1;
}
Run Code Online (Sandbox Code Playgroud)

我知道当我通过索引获取列表项时,我得到了它的副本和编译器提示我没有提交错误,但为什么采用数组索引的元素工作方式不同?

c# arrays

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

从两个8位整数计算16位整数值?

为了说明我的意思:在十六进制编辑器中,我有8C 01一个396小端.我正在使用的数据是一个带有两个独立的8位整数的元组i = (140, 1).

为了计算16位值,我的第一种方法是简单地将第二个整数乘以255然后加上第一个.然而,这种方法完全错误,因为它没有给出正确的值(由于我缺乏知识).任何人都可以提供更好的(可能是Pythonic)方法吗?

python hex integer

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

数据帧按列值过滤行

我有一个Dataframe df

       Num1   Num2 
one       1      0
two       3      2
three     5      4
four      7      6
five      9      8
Run Code Online (Sandbox Code Playgroud)

我想过滤Num1中值大于3且Num2中小于8的行.

我试过这个

df = df[df['Num1'] > 3 and df['Num2'] < 8]
Run Code Online (Sandbox Code Playgroud)

但是发生了错误.

ValueError:Series的真值是不明确的.

所以我用过

df = df[df['Num1'] > 3]
df = df[df['Num2'] < 8]
Run Code Online (Sandbox Code Playgroud)

我认为代码可以更短.

还有其他方法吗?

python filter dataframe pandas

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

为什么"if-else-break"在python中断?

我试图使用if-else表达式,如果if条件失败,它应该打破循环,但是会invalid syntax出错.

示例代码:

a = 5
while True:
    print(a) if a > 0 else break
    a-=1
Run Code Online (Sandbox Code Playgroud)

当然,如果我用传统方式书写(不使用一个班轮),它就有效.

请让我知道breakelse关键字后使用命令有什么问题.

python loops if-statement ternary-operator break

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

Haskell类型的功能?

考虑这个ADT:

data Property f a = Property String (f a) | Zilch
  deriving Show
Run Code Online (Sandbox Code Playgroud)

这是什么f?它是一个功能a吗?它是'类型函数'吗?教练说Haskell有一个图灵完整类型的语言......所以在这种情况下,类型也可以具有函数我假设?

*Main> var = Property "Colors" [1,2,3,4]
*Main> :t var
var :: Num a => Property [] a
Run Code Online (Sandbox Code Playgroud)

怎么f[]在这里?既然[]是空列表的构造函数,那么它f总是将成为a以下示例中类型的最外面的空构造函数?

*Main> var = Property "Colors" [(1,"Red"),(2,"Blue")]
*Main> :t var
var :: Num t => Property [] (t, [Char])

*Main> var = Property "Colors" (1,"Red")
*Main> :t var
var :: Num t => Property …
Run Code Online (Sandbox Code Playgroud)

haskell types

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