递归函数只将字符放在列表前面一次

时间:2017-04-28 16:24:40

标签: haskell recursion

所以我必须编写一个递归函数,用前一个函数用字母替换给定的单词列表。那部分完美无缺。但是我还必须在列表前面添加<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="user" type="com.example.User"/> </data> <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.firstName}"/> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@{user.lastName}"/> </LinearLayout> </layout> 符号,并在列表后面添加相同的符号和'|'符号。我现在有这个代码:

'\n'

这会将每个字母前面的第一个符号和列表后面的两个其他符号放置多次。如何在此函数中仅将这些符号添加到列表的开头和结尾一次?

1 个答案:

答案 0 :(得分:0)

这不是解决问题的正确方法(遵循评论中推荐的map方法),但要显示处理具有不同的第一个和最后一个行为的递归函数的一种方法

showRow [] = []
showRow x = go x True
    where go x True   = '|': go x False
          go [] _     = "\n"
          go (x:xs) _ = (showCell x) ++ ('|': go xs False)

虚拟布尔值触发初始值处理,空列表触发最终值处理。