我需要创建一个两个参数a Int和a 的函数[Int],它返回一个新[Int]的第一个参数被删除.
我可以很容易地创建函数,包括列表推导和列表递归.但是,我使用这些参数:
deleteAll_list_comp :: Integer -> [Integer] -> [Integer]
deleteAll_list_rec :: (Integer -> Bool) -> [Integer] -> [Integer]
Run Code Online (Sandbox Code Playgroud)
但是,对于我的任务,我所需的参数是
deleteAll_list_comp :: (Eq a) => a -> [a] -> [a]
deleteAll_list_rec :: (Eq a) => a -> [a] -> [a]
Run Code Online (Sandbox Code Playgroud)
我不知道如何阅读这种语法.正如谷歌告诉我的,(Eq a)只是向Haskell解释这a是一种可比较的类型.但是,我不明白这一点,因为所有Int的都是自然可比的.如何使用这些参数解释和实现方法?我的意思是,参数究竟是什么?
@groovy @pelotom
谢谢,这非常清楚.我现在明白,它实际上只需要两个参数而不是三个参数.但是,我仍然遇到此代码的问题.
deleteAll_list_rec :: (Eq a) => a -> [a] -> [a]
delete_list_rec toDelete [] = []
delete_list_rec toDelete (a:as) =
if(toDelete == a) then …Run Code Online (Sandbox Code Playgroud) 我可以发送电子邮件,但我无法创建有效的附件()以放入我的电子邮件.我在网上找到的所有例子都假设它以某种方式保存在我的机器本地并通过路径链接它但事实并非如此.在我的方法中,我使用Winnovative创建文件,然后我想将它附加到电子邮件并发送它.不涉及储蓄.
protected void SendEmail_BtnClick(object sender, EventArgs a)
{
if(IsValidEmail(EmailTextBox.Text))
{
try
{
MailMessage mailMessage = new MailMessage();
mailMessage.To.Add(EmailTextBox.Text);
mailMessage.From = new MailAddress("my email");
mailMessage.Subject = " Your Order";
string htmlstring = GenerateHTMLString();
Document pdfDocument = GeneratePDFReport(htmlstring);
//Attachment attachment = new Attachment("Receipt.pdf",pdfDocument);
//mailMessage.Attachments.Add();
SmtpClient smtpClient = new SmtpClient("smtp.gmail.com");
//needs to change this password
smtpClient.Credentials = new NetworkCredential("j@gmail.com","password"); //change password to password of email
smtpClient.EnableSsl = true;
try
{
smtpClient.Send(mailMessage);
EmailErrorMessage("Email Sent");
}
catch(Exception exc)
{
EmailErrorMessage("Email could not be sent");
} …Run Code Online (Sandbox Code Playgroud) 我有一个具有参数的函数
whatIndex :: (Eq a) => a -> [a] -> Integer
Run Code Online (Sandbox Code Playgroud)
我返回内部[a]的索引,从0开始,或者如果找不到则返回-1.这就是我写的
module WhatIndex where
whatIndex :: (Eq a) => a -> [a] -> Integer
whatIndex p [] = -1
whatIndex p (a:as)
| p==a = index
| otherwise = whatIndex p as
where index = 1+whatIndex p as
Run Code Online (Sandbox Code Playgroud)
显然,我在这里没有正确增加索引.知道为什么这不起作用吗?另外,我无法更改参数.
========================
这是一些基本的输入/输出
whatIndex 3 [] = -1
whatIndex 2 [1,2,3,2,1]=1
whatIndex 1 [1,2,3,2,1]=0
whatIndex 'b' ['a' .. 'z']=1
Run Code Online (Sandbox Code Playgroud)