Rangeも再帰する

[]using[] []namespace[] []pstade[][]::[][]oven[][];[]

[]typedef[]
[]any_range[][]<[][]int[][], [][]boost[][]::[][]single_pass_traversal_tag[][]>[]
[]range[][];[]


[]int[] []main[][]()[]
[]{[]
[]int[] []const[] []one[][] = [][]1[][];[]

[]range[] []fibs[][];[]

[]fibs[][] =[]
[]as_single[][]([][]one[][])|[][]appended[][]([][]one[][])|[][]transformed[][]([][]pstade[][]::[][]as_value[][])|[]
[]jointed[][]([]
[]pstade[][]::[][]pack[][]([][]recursion[][]([][]fibs[][]), [][]recursion[][]([][]fibs[][])|[][]dropped[][]([][]1[][]))|[]
[]zipped_with[][]([][]regular[][]([][]lambda[][]::[][]_1[][] + [][]lambda[][]::[][]_2[][]))[]
[] )[]
[] ;[]

[]std[][]::[][]cout[][] << ([][]fibs[][]|[][]taken[][]([][]20[][]));[]
[]}[]