小编Sim*_*ine的帖子

Snap Web应用程序与MySQL连接

我在过去的几天里一直在和Haskell合作.我使用Haskell和Snap创建了一个小型Web应用程序.我添加了一个HTML表单来获取用户数据并使用Haskell配置了一个mysql数据库.我可以使用Haskell检索数据.我想知道如何将用户输入插入数据库.

echo :: Application ()
echo = do      
  firstName <- decodedParam "firstname" 
  heistLocal (bindSplices echoSplices) $ render "echo"
  where   
    decodedParam p = fromMaybe "" <$> getParam p    
Run Code Online (Sandbox Code Playgroud)

以下是我在Web应用程序中建立数据库连接的方法.现在我想连接这两个函数,但我不能在其中使用sqlExe echo,那么如何将数据插入到db中.这里缺少什么?

sqlExe :: IO [[SqlValue]]
sqlExe =
  do conn <- connectMySQL defaultMySQLConnectInfo {
                  mysqlHost = "localhost",
                  mysqlDatabase = "test",
                  mysqlUser = "root",
                  mysqlPassword = "password",
                  mysqlUnixSocket = "/var/lib/mysql/mysql.sock" }               
     quickQuery conn "select* from Test" []
Run Code Online (Sandbox Code Playgroud)

如果有人能帮助我摆脱这个问题,我真的很感激.

mysql haskell haskell-snap-framework

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

标准ML二叉树遍历

我是SML的新手并且正在进行关于树遍历的练习.这是问题的设定.

datatype 'a bTree = nil | bt of 'a bTree * 'a * 'a bTree;
Run Code Online (Sandbox Code Playgroud)

我需要编写一个函数inorder,它接受一个二叉树并在inorder遍历中返回树的所有成员的列表.

我写了这一行:

fun inorder(nil) = nil
  | inorder(bt(left,key,right)) = inorder(left) @ [key] @ inorder(right);
Run Code Online (Sandbox Code Playgroud)

但得到一些错误,不知道如何解决:

Error: operator and operand don't agree [tycon mismatch]
operator domain: 'Z list * 'Z list
operand:         'Z list * 'Y bTree
in expression:
  (key :: nil) @ inorder right

Error: operator and operand don't agree [tycon mismatch]
operator domain: 'Z list * 'Z list
operand:         'Y bTree * _ …
Run Code Online (Sandbox Code Playgroud)

binary-tree ml sml tree-traversal

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

在SML中,为什么你不允许在模式中实现常量?

此代码不被接受;

> fun fact 0.0 = 1.0
Error-Real constants not allowed in patterns
> | fact n = n*fact(n-1);
Static Errors
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

constants sml polyml

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

标准机器学习中命题逻辑公式的大小

我正在研究这个问题,其中命题逻辑公式表示为:

datatype fmla =
     F_Var of string
   | F_Not of fmla
   | F_And of fmla * fmla
   | F_Or of fmla * fmla 
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个返回命题逻辑公式大小的函数。命题变量的大小为 1;逻辑非的大小为 1 加上其子公式的大小;逻辑合取和逻辑析取的大小为 1 加上其子公式的大小。

我将如何尝试解决这个问题?

ml sml mosml

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

Mlton编译器无法正常工作(不提供任何输出)

在Ubuntu上安装了MLton编译器(sudo apt-get install mlton)并且在安装时没有任何问题(貌似).

当我尝试使用它(例如"mlton test.sml")时,它会停留一秒钟,然后什么也不返回.如果我尝试在我正在尝试编译的文件中打印某些东西,那就什么都没有.然而,奇怪的是如果我给它糟糕的ML代码("x = 2",没有val),它会吐出像"未定义变量"等常规错误.

我在这里和其他地方在网上看过,似乎并没有关注我正在经历的事情.也许我只是用错了?

提前致谢.

ml sml mlton

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

ASP.NET MVC HTML Escape

我使用以下内容在视图中显示一些内容: <%= Html.Encode(Model.synopsis) %>

内容概要具有转义的HTML字符,例如存储在数据库中的某些内容如下所示:

&lt;p&gt;Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud
exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure
dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur.
Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit
anim id est laborum.&lt;/p&gt;
Run Code Online (Sandbox Code Playgroud)

如何更改我的代码以将其显示为HTML?因此,转义的HTML在前端变为HTML.

谢谢.

c# asp.net-mvc

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

使用'compare'函数比较字符串

要比较两个字符串并将字符串添加到列表中,如果它们相等,我使用内置的比较函数创建了这个函数:

fun compareString(string, list) = 
    if compare(string, "hello") = EQUAL then string::list;
Run Code Online (Sandbox Code Playgroud)

但是,这会产生错误.我想我的语法一定是错的,我是否正确使用了比较功能?

根据文档,比较函数的工作原理如下:

compare(s,t)使用Char.compare字符的顺序对两个字符串进行字典比较.如果s小于,等于或大于t,则返回LESS,, EQUALGREATER.

sml

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

从[Char]中提取YYYYMMDD并创建DateTime值

我有包含日期​​的字符串,格式为"YYYYMMDD".这是理所当然的,没有错误的可能性.

我想从他们创建DateTime.

我设法有一些工作,但这些小事情似乎很复杂:

-- Only works in base 10 , for positive values
stringToInt :: String -> Int
stringToInt [] = 0
stringToInt (x:xs) = (digitToInt x * 10^length xs ) + (stringToInt xs) 

-- Expecting format = "YYYYMMDD"
stringToDateTime :: String -> DateTime
stringToDateTime s = DateTime year month day 0 0 0
  where year = stringToInt $ take 4 s 
        month = stringToInt $ take(6-4) . drop 4 $ s
        day = stringToInt $ take(8-6) . drop 6 …
Run Code Online (Sandbox Code Playgroud)

haskell

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

如何从do符号传递给(>> =)运算符表示法?

我真的不明白为什么这样的代码行实际工作:

来自 Network.HTTP.Simple

{-# LANGUAGE OverloadedStrings #-}
import Network.HTTP.Simple
import qualified Data.ByteString.Char8 as B8

main :: IO ()
main = httpBS "http://example.com" >>= B8.putStrLn . getResponseBody
Run Code Online (Sandbox Code Playgroud)

我可以用符号重写这些东西:

test = do
          request <- return "http://example.com"
          result <- httpBS request
          let body = getResponseBody result
          B8.putStrLn body
Run Code Online (Sandbox Code Playgroud)

这工作,即使我无法弄清楚是什么类型return "http://example.com".

Q1:编译器如何设法找到我想要使用的Monad?

我的猜测是:它来自do块的返回是一个IO(),因此它将是一个IO(请求)?

现在,当尝试在更复杂的代码中使用httpBS时,我遇到了一些困难

test.hs文件:

{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE OverloadedStrings #-}

import Network.HTTP.Simple
import qualified Data.ByteString.Char8 as B8


request = parseRequest "http://example.com" 
Run Code Online (Sandbox Code Playgroud)

这给出了错误:

Prelude> :load test.hs
[1 of 1] Compiling …
Run Code Online (Sandbox Code Playgroud)

monads haskell

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

如何编写 Functor 实例

我有以下类型data Summish a b = First a | Second b

如何为其编写 Functor 实例?

我试过

instance Functor (Summish a) where
  fmap f (Second a) = Second (f a)
Run Code Online (Sandbox Code Playgroud)

haskell functor

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