LISP:从用户读取数字并与数组索引进行比较
LISP: read number from user and commpare with array index
大家好,我是函数式编程的新手,我真的不清楚有人可以帮助我吗?
我的问题只是为了了解使用函数式编程语言编写的哲学,例如我如何用 Lisp 语言编写程序来读取用户输入并比较用户输入和数组索引?
关于我的问题的另一部分,我们如何在 lisp 中指定数组的索引?
例如,我是用像 C# 这样的数字编程语言编写这个程序的,但我如何在 LISP 中完成它?
static void Main(string[] args)
{
while (true)
{
Console.Write("Enter the number:");
string name = Console.ReadLine();
string[] numbers = {"0","1", "2", "3", "4", "5"};
string[] words = {"one", "two", "three", "four", "five" };
for (int i = 0; i < numbers.Length; i++)
{
if (name == numbers[i].ToString())
{
Console.WriteLine(words[i].ToString());
}
}
}
}
Common Lisp 是多范式的,而不是纯函数式的。确实没有理由从 C# 更改您的代码算法。如果你想写成程序化的风格,你可以继续这样做。
(defun main (&rest args)
(declare (ignore args))
(loop
(princ "Enter the number:")
(finish-output)
(let ((name (read-line))
(numbers #("0" "1" "2" "3" "4" "5"))
(words #("one" "two" "three" "four" "five")))
(loop for i from 0 upto (length numbers)
when (equal name (elt numbers i))
do (print (elt words i))))))
不幸的是,您的示例在 C# 中无法正常工作,因此很难猜测您希望它在 Lisp 中执行什么操作。以下是一个通用版本,它将对任何数字(不仅仅是 0-4)执行相同的操作,但仍然遵循 C# 示例的“形状”。
(defun main ()
(loop
(fresh-line)
(princ "Enter a number:")
(finish-output)
(let* ((*read-eval* nil)
(number (read)))
(format t "~&~r" (1+ number)))))
大家好,我是函数式编程的新手,我真的不清楚有人可以帮助我吗? 我的问题只是为了了解使用函数式编程语言编写的哲学,例如我如何用 Lisp 语言编写程序来读取用户输入并比较用户输入和数组索引? 关于我的问题的另一部分,我们如何在 lisp 中指定数组的索引? 例如,我是用像 C# 这样的数字编程语言编写这个程序的,但我如何在 LISP 中完成它?
static void Main(string[] args)
{
while (true)
{
Console.Write("Enter the number:");
string name = Console.ReadLine();
string[] numbers = {"0","1", "2", "3", "4", "5"};
string[] words = {"one", "two", "three", "four", "five" };
for (int i = 0; i < numbers.Length; i++)
{
if (name == numbers[i].ToString())
{
Console.WriteLine(words[i].ToString());
}
}
}
}
Common Lisp 是多范式的,而不是纯函数式的。确实没有理由从 C# 更改您的代码算法。如果你想写成程序化的风格,你可以继续这样做。
(defun main (&rest args)
(declare (ignore args))
(loop
(princ "Enter the number:")
(finish-output)
(let ((name (read-line))
(numbers #("0" "1" "2" "3" "4" "5"))
(words #("one" "two" "three" "four" "five")))
(loop for i from 0 upto (length numbers)
when (equal name (elt numbers i))
do (print (elt words i))))))
不幸的是,您的示例在 C# 中无法正常工作,因此很难猜测您希望它在 Lisp 中执行什么操作。以下是一个通用版本,它将对任何数字(不仅仅是 0-4)执行相同的操作,但仍然遵循 C# 示例的“形状”。
(defun main ()
(loop
(fresh-line)
(princ "Enter a number:")
(finish-output)
(let* ((*read-eval* nil)
(number (read)))
(format t "~&~r" (1+ number)))))