我正在尝试在Haskell中解析二进制文件格式(Apple的二进制属性列表格式),并且该格式所需的一件事是将字节序列视为(a)无符号的1-,2-或4-字节整数; (b)签署8字节整数; (c)32位float; (d)64位double.将字节序列转换为无符号整数很容易,甚至处理有符号整数也不会很糟糕.但是对于有符号的整数,特别是Floats和Doubles,我真的不想自己实现逻辑.我已经能够找到的功能int2Float# :: Int# -> Float#,并int2Double# :: Int# -> Double#在GHC.Prim,但这些似乎并不理想(我不特别想与拆箱类型来工作).我希望有一些方法可以从a [Word8]或Word32s/Word64s中进行投射.是否有类型的任何功能Word32 -> Float,Word64 -> Double,Word64 -> Int64,或类似的?
问候,StackOverflow.
假设我有两个以下的计算S(i,j)的递归关系

我想以渐近最优的方式计算值S(0,0),S(0,1),S(1,0),S(2,0)等.几分钟的铅笔和纸张显示它展现成树状结构,可以通过几种方式横向移动.现在,以后树不太可能有用,所以现在我想生成嵌套列表[[S(00)],[S(10),S(01)],[S(20),S(21),S(12),S(02)],...].我创建了一个函数来生成一个S(i,0)(或S(0,j)的平面列表,具体取决于第一个参数):
osrr xpa p predexp = os00 : os00 * (xpa + rp) : zipWith3 osrr' [1..] (tail osrr) osrr
where
osrr' n a b = xpa * a + rp * n * b
os00 = sqrt (pi/p) * predexp
rp = recip (2*p)
Run Code Online (Sandbox Code Playgroud)
但是,我不知道如何继续前进.
我想在我的代码中使用Prelude.map和Data.Map.map用于不同的目的,但合格的导入Data.Map似乎没有帮助:
Prelude> import Data.Map as M
Prelude M> map
<interactive>:3:1:
Ambiguous occurrence ‘map’
It could refer to either ‘M.map’
imported from ‘Data.Map’
(and originally defined in ‘containers-0.5.0.0:Data.Map.Base’)
or ‘Prelude.map’
imported from ‘Prelude’ (and originally defined in ‘GHC.Base’)
Run Code Online (Sandbox Code Playgroud)
我希望能够分别使用map和M.map; 我怎样才能做到这一点?
我有这个结构给人:
(define-struct person
(
first ; a string: first name
last ; a string: last name
sex ; a symbol: 'male, 'female
eyes ; a symbol: 'blue, 'brown', 'green
hair ; a symbol: 'blonde, 'brown, 'black, 'red
mother ; a person: empty if not known
father ; a person: empty if not known
born ; a number: year of birth
)
)
Run Code Online (Sandbox Code Playgroud)
然后我让人们:
(define P-00000 (make-person "Alexandra" "Harper" 'female 'blue 'red empty empty 1897))
(define P-10000 (make-person "Joshua" "Sherman" 'male …Run Code Online (Sandbox Code Playgroud) 我的地址簿注释字段中有两行
Test 1
Test 2
Run Code Online (Sandbox Code Playgroud)
我想将每一行作为单独的值或从notes字段中获取最后一行.
我试过这样做:
tell application "Address Book"
set AppleScript's text item delimiters to "space"
get the note of person in group "Test Group"
end tell
Run Code Online (Sandbox Code Playgroud)
但结果是
{"Test 1
Test 2"}
Run Code Online (Sandbox Code Playgroud)
我在找 :
{"Test1","Test2"}
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
Text派生Read实例时,我无法将 utf8 字符解析为。例如,当我在ghci 中运行以下...
> import Data.Text
> data Message = Message Text deriving (Read, Show)
> read ("Message \"?\"") :: Message
Message "\8594"
Run Code Online (Sandbox Code Playgroud)
我可以做些什么来使我的文本保持在Messageutf-8 编码中吗?即结果应该是...
Message "?"
Run Code Online (Sandbox Code Playgroud)
(PS 我已经将我的序列化消息接收为Text,但目前需要unpack到 aString才能调用read。我很想避免这种情况......)
编辑:啊对不起,答案正确地指出它show不是read转换为"\8594"- 有没有办法在没有反斜杠编码的情况下再次show转换回Text?
我怎么能写一个像int gog(float i)和float gog(int i)(通常称为"重载")的函数?一些简单的重载可以通过实现
class PP a where
gog :: a -> Int
instance PP Bool where
gog _ = 1
instance PP Char where
gog _ = 1
Run Code Online (Sandbox Code Playgroud)
但上面的例子只使参数具有多态性.如果我们想要使参数和结果都具有多态性,我们必须编写如下内容:
class PP a where
gog :: Uu b => a -> b
class UU a where
-- This function can convert between different types of UU.
fromUuToUu :: UU b => a -> b
Run Code Online (Sandbox Code Playgroud)
没有fromUuToUu,结果中的多态性gog是不可能的.但我不能写fromUuToUu,这与这个问题的主题相关,即如何创建一个参数和结果都是多态的函数.
我在Umbraco v7.1上使用ImageGen.到目前为止一直很好,我能通过我的Razor代码获取裁剪网址.
但是,我需要在我的Api控制器上获取裁剪网址,但我不确定如何执行此操作.
这就是我目前正试图获得它的方式.
ModelImage = Services.MediaService.GetById(galleryId).GetValue("modelImage").ToString()
Run Code Online (Sandbox Code Playgroud)
...其中ModelImage是"Image Cropper"数据类型的别名.这将返回src属性中的图像URL以及裁剪信息(添加换行符):
ModelImage: "{
"focalPoint": {
"left": 0.5,
"top": 0.5
},
"src": "/media/1828/bob-marley-thumbnail-update.jpg",
"crops": [
{
"alias": "modelListCrop",
"width": 298,
"height": 380,
"coordinates": {
"x1": 0.071221447830289469,
"y1": .051177864855964005,
"x2": 0.42344542232622806,
"y2": 0.45016601603464318
}
}
]
}"
Run Code Online (Sandbox Code Playgroud)
有谁知道如何获得裁剪网址而不是原始图片网址?
我正在尝试在Haskell中定义一个名为"Poly"的新类型,其中类型是表示多项式表达式的"Num"列表.[1,2,3]对应于3x ^ 2 + 2x + 1,因此[4,5,6,0,0 ... 0]与[4,5,6]具有相同的多项式.
我已经创建了一个名为"chop"的辅助函数来从列表的末尾删除0,但是我在比较两个列表时遇到了麻烦.任何想法为什么我使用"实例"在这里不起作用?
它编译,但当你尝试比较2个Poly实例时,WinGHCi挂起.
newtype Poly a = P [a]
x :: Num a => Poly a
chop :: (Eq a, Num a) => Poly a -> Poly a
chop (P l) = if (last l) == 0 then chop (P $ init l) else P l
instance (Num a, Eq a) => Eq (Poly a) where
(==) m n = if (chop m) == (chop n) then True else False
Run Code Online (Sandbox Code Playgroud) C99标准允许创建灵活的阵列成员,例如
typedef struct pstring {
size_t length;
char string[];
} pstring;
Run Code Online (Sandbox Code Playgroud)
然后用类似的东西初始化pstring* s = malloc(sizeof(pstring) + len).len为零是允许的吗?它似乎是一致的,并且不时地节省空间(pstring当然可能不是这个例子).另一方面,我不知道下面的代码会做什么:
pstring* s = malloc(sizeof(pstring));
s->string;
Run Code Online (Sandbox Code Playgroud)
这看起来似乎可能适用于一个编译器而不是另一个编译器,或者在一个操作系统而不是另一个操作系统上,或者在某一天而不是另一个,所以我真正想知道的是标准对此的说法.这是malloc示例代码中未定义的行为,还是仅对其s->string无效的访问,还是完全不同的其他内容?
假设我有如下视图:
class FooView(ListAPIView):
serializer_class = FooSerializer
pagination_class = FooPagination
Run Code Online (Sandbox Code Playgroud)
它返回一个典型的分页响应,例如:
{
"count":2,
"next":null,
"previous":null,
"results":[
{
"id":1,"name":"Josh"
},
{
"id":2,"name":"Vicky"
}]
}
Run Code Online (Sandbox Code Playgroud)
如何(如果可能)将自定义字段添加到此响应中以使结果如下?
{
"count":2,
"next":null,
"previous":null,
"custom":"some value",
"results":[
{
"id":1,"name":"Josh"
},
{
"id":2,"name":"Vicky"
}]
}
Run Code Online (Sandbox Code Playgroud)
假设“某个值”以适当的方法计算并存储,例如:
def get_queryset(self):
self.custom = get_custom_value(self)
# etc...
Run Code Online (Sandbox Code Playgroud) 一个新手问题:
我正在练习赋予char指针,但发现没有打印出来.这是代码:
#include <stdio.h>
int main (void)
{
char * option_string = NULL;
option_string = (char*)malloc(sizeof(5));
memset(option_string, 0, sizeof(char) * 5);
int j;
for ( j = 0; j < 5; j++)
{
*option_string++ = 'a';
}
printf("print options_string: %s\n", option_string); //!nothing was printed out!
free(option_string);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
提前致谢!
haskell ×6
c ×2
parameters ×2
struct ×2
typeclass ×2
applescript ×1
automator ×1
bits ×1
c# ×1
c99 ×1
character ×1
django ×1
encoding ×1
import ×1
module ×1
newtype ×1
pagination ×1
parsing ×1
pointers ×1
polymorphism ×1
racket ×1
recurrence ×1
recursion ×1
scheme ×1
string ×1
text ×1
umbraco ×1
utf-8 ×1