• Home
  • Script library
  • AltME Archive
  • Mailing list
  • Articles Index
  • Site search
 

World: r4wp

[Rebol School] REBOL School

Maxim
3-Jul-2012
[551x2]
we neededed to support, xml rest, SOAP and direct get/post interface 
to the same functions, and that is now working via a configuration, 
which allows you to tweak how the url is read and switch interfaces 
on the fly.
I also added path support for the mod so that you can use the same 
domain for web and api services.
Sujoy
3-Jul-2012
[553x2]
wow - cool!
any chance i can get to play with the code?
Maxim
3-Jul-2012
[555]
like I said , right now I can't rip it out easily because a lot of 
the code is shared with the code it serves (which is not part of 
the open source package).   It wasn't built with the task of making 
it independent... but it can be done.  It just takes time, which 
I currently don't have.
Sujoy
3-Jul-2012
[556x3]
no worries - am happy to wait!
sorry maxim - not having any luck with the sort function

>> sf: func [a b][o: select a/attribs "1991-1992" m: select b/attribs 
"1991-1992" o/m > m/m ]
>> sort/skip/compare/all comps 2 :sf
** Script Error: Invalid path value: attribs
** Near: o: select a/attribs "1991-1992"
help?
Henrik
3-Jul-2012
[559]
One of your objects does not have the 'attribs word.
Sujoy
3-Jul-2012
[560]
this is the structure i'm using:
h: #hash! [k-a object! [
    name: "wonderwoman"
    attribs: make hash! ["1993-1994" #object! [
            rebal-year: 1993
            m: 160.018245
        ] "1992-1993" #object! [
            rebal-year: 1992
            m: 104.293
        ] "1991-1992" #object! [
            rebal-year: 1991
            m: 26.628
        ] ] k-b object! [
    name: "wonderwoman"
    attribs: make hash! ["1993-1994" #object! [
            rebal-year: 1993
            m: 160.018245
        ] "1992-1993" #object! [
            rebal-year: 1992
            m: 104.293
        ] "1991-1992" #object! [
            rebal-year: 1991
            m: 26.628
        ] ]
Henrik
3-Jul-2012
[561x2]
The first element in that has does not appear to be an object.
that has = that hash
Sujoy
3-Jul-2012
[563x2]
yes - its actually a string
shouldnt sort/skip/compare/all comps 2 :sf pick up the object?
Henrik
3-Jul-2012
[565x2]
I'm not sure if it's possible, but you may then need to use 4 parameters 
instead of 2 in the compare function. Then use the string/object 
pairs for comparison.
I'm not certain that SKIP can be used with COMPARE.
Sujoy
3-Jul-2012
[567]
ah - so i should do:

>> sf: func [a b c d] [ o: select b/attribs "1991-1992" m: select 
d/attribs "1991-1992" o/m > m/m]
??
Henrik
3-Jul-2012
[568]
Untested, but yes, that's what I meant. I really don't know if it 
works.
Sujoy
3-Jul-2012
[569x2]
i get:
>> sort/compare comps :sf
** Script Error: Invalid argument: ?function?
** Near: sort/compare comps :sf
>> sort/compare/all comps :sf
** Script Error: Invalid argument: ?function?
** Near: sort/compare comps :sf
Arnold
3-Jul-2012
[571]
Back to the drawing board Sujoy and displaying the elements you want 
to use in your function piece by piece and maybe dump-obj is of any 
use?
(Now you don't use a and c)
Sujoy
3-Jul-2012
[572]
the sort/compare works great if its an object...am stuck because 
its a hash
Henrik
3-Jul-2012
[573]
Testing your code. What is COMPS?
Sujoy
3-Jul-2012
[574]
sorry - comps should be h - the hash
Henrik
3-Jul-2012
[575]
ok, the sort function must only have 2 parameters.
Sujoy
3-Jul-2012
[576]
not quite understanding how to use sort with this structure...
Henrik
3-Jul-2012
[577]
The structure is a little strange. Are you trying to sort the outer 
hash or the inner hash?
Sujoy
3-Jul-2012
[578x2]
both actually - need the outer hash sorted based on a property of 
the object inside the inner hash
ideally, would like to keep the hash h intact for retrieval by the 
keys
Henrik
3-Jul-2012
[580]
The data you have pasted, contains two identical objects, so am not 
sure what the outcome is supposed to be.
Sujoy
3-Jul-2012
[581x3]
here's the hash closer to reality:
#[hash!["20Th Century Finance Corpn. Ltd. [Merged]" #[object! [
        name: "20Th Century Finance Corpn. Ltd. [Merged]"
        mcapz: #[hash!["1993-1994" #[object! [
                yyyymmdd: 30-Sep-1993
                rebal-year: 1993
                ln-mcap: 5.07528783998276
                mcap: 160.018245
                ltmto: 0
            ]] "1992-1993" #[object! [
                yyyymmdd: 30-Sep-1992
                rebal-year: 1992
                ln-mcap: 4.64720424566052
                mcap: 104.293
                ltmto: 0
            ]] "1991-1992" #[object! [
                yyyymmdd: 27-Sep-1991
                rebal-year: 1991
                ln-mcap: 3.28196329373846
                mcap: 26.628
                ltmto: 0
            ]] "1996-1997" #[object! [
                yyyymmdd: 30-Sep-1996
                rebal-year: 1996
                ln-mcap: 4.22786241308827
                mcap: 68.5705
                ltmto: 4.4951
            ]] "1995-1996" #[object! [
                yyyymmdd: 29-Sep-1995
                rebal-year: 1995
                ln-mcap: 4.6522555263423
                mcap: 104.821146
                ltmto: 1.9152
            ]] "1994-1995" #[object! [
                yyyymmdd: 30-Sep-1994
                rebal-year: 1994
                ln-mcap: 5.60133608288591
                mcap: 270.787961
                ltmto: 0
            ]] "1999-2000" #[object! [
                yyyymmdd: 1-Sep-1999
                rebal-year: 1999
                ln-mcap: #[none]
                mcap: #[none]
                ltmto: 0.3847
            ]] "1998-1999" #[object! [
                yyyymmdd: 30-Sep-1998
                rebal-year: 1998
                ln-mcap: 3.26596118430253
                mcap: 26.205287
                ltmto: 1.8029
            ]] "1997-1998" #[object! [
                yyyymmdd: 30-Sep-1997
                rebal-year: 1997
                ln-mcap: 3.70636432395486
                mcap: 40.705545
                ltmto: 4.0871
            ]]]]
    ]] "3M India Ltd." #[object! [
        name: "3M India Ltd."
        mcapz: #[hash!["1993-1994" #[object! [
                yyyymmdd: 30-Sep-1993
                rebal-year: 1993
                ln-mcap: 5.2695189287062
                mcap: 194.322457
                ltmto: 0
            ]] "1992-1993" #[object! [
                yyyymmdd: 30-Sep-1992
                rebal-year: 1992
                ln-mcap: 5.16365007188814
                mcap: 174.80133
                ltmto: 0
            ]] "1991-1992" #[object! [
                yyyymmdd: 27-Sep-1991
                rebal-year: 1991
                ln-mcap: 5.13698182480598
                mcap: 170.201295
                ltmto: 0
            ]] "1994-1995" #[object! [
                yyyymmdd: 30-Sep-1994
                rebal-year: 1994
                ln-mcap: 5.67980332582336
                mcap: 292.89182
                ltmto: 0
            ]] "1995-1996" #[object! [
                yyyymmdd: 29-Sep-1995
                rebal-year: 1995
                ln-mcap: 5.36086870986747
                mcap: 212.909823
                ltmto: 2.438
            ]] "1996-1997" #[object! [
                yyyymmdd: 27-Sep-1996
                rebal-year: 1996
                ln-mcap: 5.29527142738166
                mcap: 199.391739
                ltmto: 13.7717
            ]] "1999-2000" #[object! [
                yyyymmdd: 30-Sep-1999
                rebal-year: 1999
                ln-mcap: 6.62266108574718
                mcap: 751.943423
                ltmto: 70.8157
            ]] "1998-1999" #[object! [
                yyyymmdd: 30-Sep-1998
                rebal-year: 1998
                ln-mcap: 5.59892693888198
                mcap: 270.136379
                ltmto: 12.1941
            ]] "1997-1998" #[object! [
                yyyymmdd: 30-Sep-1997
                rebal-year: 1997
                ln-mcap: 5.41116944722567
                mcap: 223.893266
                ltmto: 10.31
            ]] "2002-2003" #[object! [
                yyyymmdd: 30-Sep-2002
                rebal-year: 2002
                ln-mcap: 5.87169433363346
                mcap: 354.849705
                ltmto: 18.495901
            ]] "2001-2002" #[object! [
                yyyymmdd: 28-Sep-2001
                rebal-year: 2001
                ln-mcap: 5.70261800358953
                mcap: 299.650862
                ltmto: 17.817
            ]] "2000-2001" #[object! [
                yyyymmdd: 29-Sep-2000
                rebal-year: 2000
                ln-mcap: 6.51937914011665
                mcap: 678.157214
                ltmto: 39.9108
            ]] "2003-2004" #[object! [
                yyyymmdd: 30-Sep-2003
                rebal-year: 2003
                ln-mcap: 6.14402101757279
                mcap: 465.923295
                ltmto: 22.518454
            ]] "2004-2005" #[object! [
                yyyymmdd: 30-Sep-2004
                rebal-year: 2004
                ln-mcap: 6.36648735824138
                mcap: 582.009842
                ltmto: 18.47743
            ]] "2005-2006" #[object! [
                yyyymmdd: 30-Sep-2005
                rebal-year: 2005
                ln-mcap: 6.89448778574422
                mcap: 986.820132
                ltmto: 76.96006
            ]] "2007-2008" #[object! [
                yyyymmdd: 28-Sep-2007
                rebal-year: 2007
                ln-mcap: 7.61782530207882
                mcap: 2034.13369
                ltmto: 565.232151
            ]] "2006-2007" #[object! [
                yyyymmdd: 29-Sep-2006
                rebal-year: 2006
                ln-mcap: 7.29216005157061
                mcap: 1468.739827
                ltmto: 326.743221999999
            ]] "2008-2009" #[object! [
                yyyymmdd: 30-Sep-2008
                rebal-year: 2008
                ln-mcap: 7.3914506403371
                mcap: 1622.057429
                ltmto: 244.97382
            ]] "2010-2011" #[object! [
                yyyymmdd: 30-Sep-2010
                rebal-year: 2010
                ln-mcap: 8.40720356304076
                mcap: 4479.217133
                ltmto: 123.100087
            ]] "2009-2010" #[object! [
                yyyymmdd: 30-Sep-2009
                rebal-year: 2009
                ln-mcap: 7.58070461394744
                mcap: 1960.009529
                ltmto: 91.0568390000001
            ]] "2011-2012" #[object! [
                yyyymmdd: 30-Sep-2011
                rebal-year: 2011
                ln-mcap: 8.45073201719186
                mcap: 4678.496222
                ltmto: 282.168385
            ]]]]
    ]]
i need to sort the hash based on a param (mcap) for an input year 
(say "1991-1992")
then do things like 
1. select the top 50%
2. calculate interquartile ranges etc.
Henrik
3-Jul-2012
[584]
Why do the brackets not match...
Sujoy
3-Jul-2012
[585]
apologies again - extracted this fragment from a gzillion mb file 
- there should be     
  ]]]]
at the end
Henrik
3-Jul-2012
[586]
aha, skipping does work, but the comparison happens on the strings 
instead of the objects.
Sujoy
3-Jul-2012
[587x2]
yes...
>> sort/skip/compare/all comps 2 func [a b][a > b ]
..sorts in reverse order
i cant seem to reference the object!
Henrik
3-Jul-2012
[589]
is MCAPZ the same as ATTRIBS?
Sujoy
3-Jul-2012
[590x3]
yes
if i do:

>> sort/skip/compare/all comps 2 func [a b][length? a/mcapz > length? 
b/mcapz ]
i get an invalid path error
and what i need to do is more complex than that :(
Henrik
3-Jul-2012
[593]
you can do a REVERSE H before and after the sorting. That allows 
SORT to grab the objects.
Sujoy
3-Jul-2012
[594x2]
let me try...
>> reverse comps sort/skip/compare/all comps 2 func [a b][length? 
a/mcapz  > length? b/mcapz ]
** Script Error: Invalid path value: mcapz
** Near: length? a/mcapz > length? b/mcapz
Henrik
3-Jul-2012
[596]
Try:


func [a b][probe type? a probe type? b length? a/mcapz  > length? 
b/mcapz ]
Maxim
3-Jul-2012
[597]
when you use /all,   you get two BLOCKS.  one for each record of 
length /skip

so your function is called like so: 

sort-func [   "2009-2010"  #[object! [  ... ]]  ]      [ "2011-2012" 
 #[object! [ ... ]]   ]
Henrik
3-Jul-2012
[598]
aha, that means you don't need the REVERSE. You just need to reference 
the values differently.
Sujoy
3-Jul-2012
[599]
reverse comps sort/skip/compare/all comps 2  func [a b][probe type? 
a probe type? b length? a/mcapz  > length? b/mcapz ]

block!
block!
** Script Error: Invalid path value: mcapz
** Near: length? a/mcapz > length? b/mcapz
Henrik
3-Jul-2012
[600]
Maxim's SORT-FUNC block shows you how to reference the values properly.