That's a long story. Essentially, a list is a pair of the first element and a pair of a second element and a pair of the third element and a pair of …
Cheers, Marcus On 22.11.2016 23:18, Dave NotTelling wrote: > I ask because it feels like a bug. Things like ((a . b), (c . d), (e > . f)) are definitely not pairs (assuming a pair is 2 elements) and (in > my opinion) should not return true for pmt.is_pair(). > > On Tue, Nov 22, 2016 at 5:12 PM, Dave NotTelling <dmp250...@gmail.com > <mailto:dmp250...@gmail.com>> wrote: > > Martin, > > Was that done on purpose? > > Thank you for the link! I hadn't thought about checking that > way. > > Thanks! > > -Dave > > On Tue, Nov 22, 2016 at 5:08 PM, Martin Braun > <martin.br...@ettus.com <mailto:martin.br...@ettus.com>> wrote: > > Dave, > > pairs pass is_dict(), which is possibly the root cause here. > See also: > > https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b26617616d08b4082668962f/gr-uhd/lib/usrp_block_impl.cc#L487-L494 > > <https://github.com/gnuradio/gnuradio/blob/31b28f0cf4694378b26617616d08b4082668962f/gr-uhd/lib/usrp_block_impl.cc#L487-L494> > > Cheers, > M > > On 11/22/2016 01:47 PM, Dave NotTelling wrote: > > I noticed today that the is_dict and is_pair checks are not > appearing to > > work properly. Here is an example that shows the issue: > > > > [code] > > > > #!/usr/bin/python > > > > import pmt > > > > def print_pmt(dictVar): > > print 'isPair:%05s, isDict:%05s, isTuple:%05s => %s' % > > (pmt.is_pair(dictVar), pmt.is_dict(dictVar), > pmt.is_tuple(dictVar), dictVar) > > > > print 'DICT' > > > > d = pmt.make_dict() > > print_pmt(d) > > > > d = pmt.dict_add(d, pmt.intern('a'), pmt.intern('b')) > > print_pmt(d) > > > > d = pmt.dict_add(d, pmt.intern('c'), pmt.intern('d')) > > print_pmt(d) > > > > d = pmt.dict_add(d, pmt.intern('e'), pmt.intern('f')) > > print_pmt(d) > > > > print '\nCONS' > > > > p = pmt.cons(pmt.make_dict(), pmt.make_u8vector(0,0)) > > print_pmt(p) > > > > [/code] > > > > Run that and you'll see what I consider strange behavior. > The values of > > is_pair and is_dict to not match what is expected. Is that > by design? > > If so, why? > > > > ((a . b)) is not a pair... It's a single element dictionary > > ((c . d) (a . b)) i can sorta see this being a pair, but it > wasn't > > created that way > > ((e . f) (c . d) (a . b)) definitely not a pair as it's 3 > elements > > > > (() . #[]) don't dictionaries have to be nested? > > > > > > Thanks! > > > > > > _______________________________________________ > > Discuss-gnuradio mailing list > > Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> > > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> > > > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org <mailto:Discuss-gnuradio@gnu.org> > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio > <https://lists.gnu.org/mailman/listinfo/discuss-gnuradio> > > > > > > _______________________________________________ > Discuss-gnuradio mailing list > Discuss-gnuradio@gnu.org > https://lists.gnu.org/mailman/listinfo/discuss-gnuradio
_______________________________________________ Discuss-gnuradio mailing list Discuss-gnuradio@gnu.org https://lists.gnu.org/mailman/listinfo/discuss-gnuradio