ss1"今日"が得られているはずです。dropWhileも同様につくってみてください。takeの逆になります。同じように実験してみてください。dropWhileだと'\t'が先頭に残りますので、先頭より後ろという関数tailを使います。これもData.Listの関数で前回の宿題で出てきました。ss1)takeWhileとdropWhileを使って前回のdivideAtTabを書き換えます。s))ss1に適用してみます。ss1Divided("今日","名詞,副詞可能")所望の結果が得られているのが分かります。高階関数とは、「関数」を引数にとる「関数」のことです。Bool)という関数が引数の一つになっていました。Functionと呼ばれます。Boolなど)、1階が普通の関数(上だとisNotTabとか)、2階は1階の関数を引数にとる関数(上だとtakeWhile)、3階は2階の関数を引数にとる関数(まだ出てきていない)、、、みたいに無限に続きます。高階関数は関数型プログラミングで非常に重要な概念です。上のisNotTabみたいな箇所を他の関数、例えば、isNotAlphabetみたいなの(ここでは定義しません)と簡単に差し替えられます。Haskellは特殊ギミックをたくさん持っていますが、1つだけ選べと言われれば高階関数を自分は選びます。この後で出てくるλ式とレキシカルスコープがなければ威力は半減です。その前にmap関数を覚えていきます。これは高階関数の中でも最重要な関数になります(最も重要だらけですね(笑))。map関数リストのすべての要素にある関数を適用する高階関数です。何を言っているかはまずは具体的に使ってみましょう。getMecabedの結果はリストで得られていました。それぞれの文字数をカウントしてみます。"今日はmap関数を勉強していきます。lens以下のような結果が出てきているはずです。ss(0,"今日\t名詞,副詞可能,*,*,*,*,今日,キョウ,キョー")(1,"は\t助詞,係助詞,*,*,*,*,は,ハ,ワ")(2,"map\t名詞,固有名詞,組織,*,*,*,*")(3,"関数\t名詞,一般,*,*,*,*,関数,カンスウ,カンスー")(4,"を\t助詞,格助詞,一般,*,*,*,を,ヲ,ヲ")(5,"勉強\t名詞,サ変接続,*,*,*,*,勉強,ベンキョウ,ベンキョー")(6,"し\t動詞,自立,*,*,サ変・スル,連用形,する,シ,シ")(7,"て\t助詞,接続助詞,*,*,*,*,て,テ,テ")(8,"いき\t動詞,非自立,*,*,五段・カ行促音便,連用形,いく,イキ,イキ")(9,"ます\t助動詞,*,*,*,特殊・マス,基本形,ます,マス,マス")(10,"。\t記号,句点,*,*,*,*,。